如何显示来自两个对象Angular JS的数据?

时间:2015-04-08 21:15:13

标签: angularjs

我有两个对象:

$scope.messages = {'to' => '1'};
$scope.users = {500 : 'id' => '1', 'name' => 'Dana' };

HTML模板中的ng-repeat

<div class="user-item" ng-repeat="message in messages">
{{users[{{messages.to}}].name}}
</div>

这段代码不起作用:

{{users[{{messages.to}}].name}}

3 个答案:

答案 0 :(得分:3)

由于您在messages上进行迭代,并且在每次迭代中都有message对象,因此正确的代码为:

{{users[message.to].name}}

另外,由于上面的代码会查找users而我在您的示例中没有看到,因此我对您的users[1]对象不太确定。确保它存在,如果不存在,则将users对象重新映射到一个对象数组中,其中每个索引都是用户的id。


这是一个简单的例子(注意我必须用PHP(?)表示法修复/重构对象):

&#13;
&#13;
angular.module('app', [])
.controller('Ctrl', function($scope){
  $scope.messages = [{'to': '1'}, {'to': '1'}, {'to': '2'}, {'to': '0'}, {'to': '3'}];
  $scope.users = [
   {'name': 'Dana' },
   {'name': 'Sana' },
   {'name': 'Xana' },
   {'name': 'Lana' }
 ];
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app" ng-controller="Ctrl">
  <div class="user-item" ng-repeat="message in messages">
    {{users[message.to].name}}
  </div>
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:2)

您已经尝试从{{}}内部评估某些内容(在已评估的内容中进行评估。

除此之外,您还应该包含您所获得的任何错误以及哪些错误无效。如果您在Chrome中点击了F12,则可以看到Javascript控制台。该信息有助于您尝试解决问题。

我不明白为什么你在只持有一个值的东西上使用ng-repeat,然后你在代码中使用复数。

当然,你会想要

{{users[message.to].name}}

而不是消息 s ,因为您为该变量中的每条消息 s 提取了一个消息项。

答案 2 :(得分:2)

双花括号表示某些东西应该被解释为角度表达式。没有必要嵌套它们。所以,因为你试图让$scope.users[messages.to].name围绕那个表达式,就像在javascript中一样(没有$scope)双重curlies。

{{users[messages.to].name}}