ng-repeat中的角度过滤器与深对象

HP.*_*HP. 6 javascript angularjs angularjs-ng-repeat angular-filters

我正在按照这个问题过滤一个字段的ng-repeat

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-repeatfilteredItems吧.我没有看到true直接在视图中传递param 的方法.

ela*_*con 6

如果要访问内部属性,则需要使用对象表示法访问它:

<p ng-repeat="item in items | filter: {data :{a:1}}">{{ item.name }}</p>
Run Code Online (Sandbox Code Playgroud)

检查这个plunker.