javascript – 使用深层对象的ng-repeat中的角度过滤器

前端之家收集整理的这篇文章主要介绍了javascript – 使用深层对象的ng-repeat中的角度过滤器前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在按照这个问题过滤一个字段的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.我没有看到直接在视图中传递真实参数的方法.

解决方法

如果要访问内部属性,则需要使用对象表示法访问它:
<p ng-repeat="item in items | filter: {data :{a:1}}">{{ item.name }}</p>

检查这个plunker.

原文链接:https://www.f2er.com/js/150309.html

猜你在找的JavaScript相关文章