我正在按照这个问题过滤一个字段的ng-repeat
ng-repeat :filter by single field
但是我的情况不同,它实际上是主对象的对象值中的一个字段.基本上我只想显示data.a == 1
angular.module('myapp',[]) .controller('mainCtrl',function ($scope) { $scope.items = [{ name: "John",data: { a: 1 } },{ name: "Lee",data: { a: 2 } },{ name: "Rue",data: { a: 3 } },{ name: "Peter",data: { a: 1 } }]; });
HTML
<div ng-controller="mainCtrl"> <h1>List 1</h1> <p ng-repeat="item in items">{{ item.name }}</p> <h1>List 2</h1> <p ng-repeat="item in items | filter: {data.a :1}">{{ item.name }}</p> </div>
http://plnkr.co/edit/nh4GryqZJbEiXSzMzTKk
有关如何做到这一点的任何帮助还是有更好的方法?
更新1
我尝试了angular.filter filterBy,它也没有用.给我空白阵列.
http://plnkr.co/edit/nh4GryqZJbEiXSzMzTKk?p=preview
<p ng-repeat="item in items | filterBy: ['item.data.a'] :1">{{ item.name }}</p>
更新2
我试过这个
<p ng-repeat="item in items | filter: {data :{a:1}}">{{ item.name }}</p>
它似乎工作,但我需要完全匹配,而不是子串匹配.我读过这个但似乎找不到添加真正AngularJS Filter Exact Match的方法
任何线索?
更新3(正确的答案):
这适用于http://plnkr.co/edit/qJl6MtY6fOlVtD9Rv999?p=preview
基本上我把它添加到控制器
$scope.filteredItems = $filter('filter')($scope.items,{data :{a:1}},true);
而是对filteredItems进行ng-repeat.我没有看到直接在视图中传递真实参数的方法.