gpt4 book ai didi

AngularJS - 如何使用 ng-repeat 构建自定义过滤器以有条件地返回项目

转载 作者:行者123 更新时间:2023-12-02 23:55:36 25 4
gpt4 key购买 nike

我有一个 ng-repeat 可以打印列表项。我想编写一个自定义过滤器,以便仅当条件为真时才会打印列表项。

我的结构似乎错误,因为变量似乎没有传递到过滤器。

index.php

<div ng-show="userDetails.username" class="nav">
<p>Menu</p>
<li ng-repeat="menuItem in menu | matchAccessLevel:$rootScope.userDetails.accessLevel:menuItem.minAccess | orderBy:'position' ">
<a ng-href="/angular-app/app/{{menuItem.id}}">{{menuItem.name}}</a>
</li>
</div>

app.js

userApp.filter('matchAccessLevel', function() {
return function( item, userAccessLevel, minAccessLevel ) {
if( userAccessLevel >= minAccessLevel ) {
return item;
}
}
});

最佳答案

过滤器不适用于数组中的单个项目,它们会将整个数组转换为另一个数组。

userApp.filter('matchAccessLevel', function() {
return function( items, userAccessLevel) {
var filtered = [];
angular.forEach(items, function(item) {
if(userAccessLevel >= item.minAccess) {
filtered.push(item);
}
});
return filtered;
};
});

查看此plnkr

**始终检查函数的参数。这些值并不总是显而易见。*

参见filters guide

关于AngularJS - 如何使用 ng-repeat 构建自定义过滤器以有条件地返回项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15196161/

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