一尘不染

将参数传递给angularjs过滤器

angularjs

是否可以将参数传递给filter函数,以便您可以按任何名称进行过滤?

就像是

$scope.weDontLike = function(item, name) {
    console.log(arguments);
    return item.name != name;
};

阅读 225

收藏
2020-07-04

共1个答案

一尘不染

实际上,还有另一种(也许是更好的解决方案),您可以使用angular的本机“过滤器”过滤器,并且仍将参数传递给自定义过滤器。

考虑以下代码:

<div ng-repeat="group in groups">
    <li ng-repeat="friend in friends | filter:weDontLike(group.enemy.name)">
        <span>{{friend.name}}</span>
    <li>
</div>

要进行此工作,您只需将过滤器定义如下:

$scope.weDontLike = function(name) {
    return function(friend) {
        return friend.name != name;
    }
}

如您在这里看到的,weDontLike实际上返回另一个函数,该函数的范围内有您的参数以及来自过滤器的原始项。

我花了两天时间才意识到您可以执行此操作,但尚未在任何地方看到此解决方案。

检出angular.js过滤器的反极性,]以了解如何将其用于过滤器的其他有用操作。

2020-07-04