我正在尝试显示基于相同键的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列期待[}]
答案 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
申请上面的内容。