gpt4 book ai didi

javascript - ng-repeat 中的 Angular 过滤器与深层对象

转载 作者:数据小太阳 更新时间:2023-10-29 05:10:03 24 4
gpt4 key购买 nike

我正在关注这个问题以按字段过滤 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>

它似乎有效,但我需要完全匹配,而不是子字符串匹配。我读了这篇文章,但似乎找不到添加 true AngularJS Filter Exact Match 的方法

有什么线索吗?

更新 3(正确答案):

这有效 http://plnkr.co/edit/qJl6MtY6fOlVtD9Rv999?p=preview

基本上我把这个添加到 Controller

$scope.filteredItems = $filter('filter')($scope.items, {data :{a:1}}, true); 

并在 filteredItems 上执行 ng-repeat。我看不到直接在 View 中传递 true 参数的方法。

最佳答案

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

<p ng-repeat="item in items | filter: {data :{a:1}}">{{ item.name }}</p>

检查这个plunker .

关于javascript - ng-repeat 中的 Angular 过滤器与深层对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29140487/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com