【发布时间】:2015-09-10 08:45:16
【问题描述】:
我有来自 2 个不同控制器的 2 个(数组)对象。
对象 1(名称控制器 1):
[{id:1,"name":"jakov"},...]
对象 2(昵称控制器 2):
[{id:1, "nickname" : "jandric", "nameId" :1, "title" : "master"},...]
我通过服务从控制器 1 广播对象:
$http.get('names/').success(function(data) {
sharedService.broadcastItem(data);
});
我在控制器 2 中处理广播对象:
$scope.$on('handleBroadcast', function() {
$scope.names= sharedService.message;
});
控制器 2 也有 GET 请求:
$http.get('nicknames/').success(function (data) {
$scope.nicknames = data;
});
我有一个简单的表格,我想在其中显示:nicknameId、nickname、name 和 title。
类似这样的:
<div ng-controller="Nickname">
<table>
<tr>
<th>nicknameId</th>
<th>nickname</th>
<th>name</th>
<th>title</th>
</tr>
<tr ng-repeat="nick in nicknames">
<td>{{nick.id}}</td>
<td>{{nick.nickname}}</td>
<td ng-controller="Name">{{??????}}</td> //GET name request trigger
<td>{{nick.title}}</td>
</tr>
</table>
</div>
对于给定的 nameId,如何在第二个对象中从第一个对象获取名称??
请帮助:D
更新
我设法在 html 中这样做:
<div ng-controller="Nickname">
<table>
<tr>
<th>nicknameId</th>
<th>nickname</th>
<th>name</th>
<th>title</th>
</tr>
<tr ng-repeat="nick in nicknames">
<td>{{nick.id}}</td>
<td>{{nick.nickname}}</td>
<td ng-controller="Name">
<div ng-repeat="name in names">
<div ng-if="nick.nameId === name.id">
{{name.name}}
</div>
</div>
</td>
<td>{{nick.title}}</td>
</tr>
</table>
</div>
所以我在 for 循环中使用 for 循环。还有更简单的答案吗?
【问题讨论】:
-
你为什么不重建所需的数组并放到
$scope?昵称和名字之间有一对一的关系吗? -
同一个昵称可以附加多个名字
标签: javascript angularjs angularjs-service angularjs-controller angularjs-http