HP.*_*HP. 6 javascript angularjs angularjs-ng-repeat angular-filters
我正在按照这个问题过滤一个字段的ng-repeat
但是我的情况不同,它实际上是主对象的对象值中的一个字段.基本上我只想展示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
}
}];
});
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
http://plnkr.co/edit/nh4GryqZJbEiXSzMzTKk
有关如何做到这一点的任何帮助还是有更好的方法?
更新1
我尝试过angular.filterfilterBy,它也没用.给我空白阵列.
http://plnkr.co/edit/nh4GryqZJbEiXSzMzTKk?p=preview
<p ng-repeat="item in items | filterBy: ['item.data.a'] :1">{{ item.name }}</p>
Run Code Online (Sandbox Code Playgroud)
更新2
我试过这个
<p ng-repeat="item in items | filter: {data :{a:1}}">{{ item.name }}</p>
Run Code Online (Sandbox Code Playgroud)
它似乎工作,但我需要完全匹配,而不是子串匹配.我读过这个但似乎没有办法添加true AngularJS Filter Exact Match
任何线索?
更新3(正确的答案):
这工作http://plnkr.co/edit/qJl6MtY6fOlVtD9Rv999?p=preview
基本上我把它添加到控制器
$scope.filteredItems = $filter('filter')($scope.items, {data :{a:1}}, true);
Run Code Online (Sandbox Code Playgroud)
做ng-repeat的filteredItems吧.我没有看到true直接在视图中传递param 的方法.
如果要访问内部属性,则需要使用对象表示法访问它:
<p ng-repeat="item in items | filter: {data :{a:1}}">{{ item.name }}</p>
Run Code Online (Sandbox Code Playgroud)
检查这个plunker.
| 归档时间: |
|
| 查看次数: |
5627 次 |
| 最近记录: |