如何通过来自花药数组的键从数组中显示proprty

时间:2017-03-12 09:47:55

标签: angularjs angularjs-filter

我正在尝试显示基于相同键的2个数组的数据, 例子是

firstArray

[{$id='12321',name='test'},{$id='12312',name='test'},{$id='1234',name='test'}]

第二个数组:

[{$id='12321',value=4},{$id='12312',value=2}]

如何使用ng-repeat显示第一个数组,如果第二个数字具有此ID则显示该值。

我试着做

 <div ng-repeat="qu in vm.qus">
                <div ng-repeat="max in vm.maxs | filter :{ max.$id === qu.$id } ">

错误:

  

错误:[$ parse:syntax]语法错误:令牌'。'出人意料,   在表达式

的第34列期待[}]

2 个答案:

答案 0 :(得分:1)

您可以使用ng-if,

 <div ng-repeat="qu in vm.qus">
    <div ng-repeat="max in vm.maxs" ng-if="max.$id ===qu.$id">
      {{max}}
    </div>
  </div>

<强>样本

var app = angular.module('app', []);
app.controller('demoCtrl', ['$scope', function($scope) {
  vm = this;
  vm.qus = [{
    $id: '12321',
    value: 4
  }, {
    $id: '12312',
    value: 2
  }];

  vm.maxs = [{
    $id: '12321',
    value: 4
  }, {
    $id: '12312',
    value: 2
  }]
}]);
<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8" />
  <title></title>
</head>

<body ng-app="app" ng-controller="demoCtrl as vm">
  <div ng-repeat="qu in vm.qus">
    <div ng-repeat="max in vm.maxs" ng-if="max.$id ===qu.$id">
      {{max}}
    </div>
  </div>
  <script type=" text/javascript " src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.6/angular.js "></script>
  <script type="text/javascript " src="MainViewController.js "></script>
</body>

</html>

答案 1 :(得分:1)

你有语法错误,应该是

<div ng-repeat="max in vm.maxs | filter :{ max: {$id :qu.$id } }: true as filtered">

虽然过滤收集的更好方法是控制器,因为它只评估一次,在每个摘要周期中对html本身应用过滤得到评估(在性能方面很昂贵)

vm.filterd = $filter('filter')(vm.maxs, { max: {$id :qu.$id } }, true);

但是你必须再次考虑确保你为每个question申请上面的内容。