javascript - ngRepeat 对象上的高级 AngularJS 自定义过滤

标签 javascript angularjs angularjs-ng-repeat angularjs-filter

我想实现如下理论代码:

VIEW.html

<li ng-repeat="player in players | filter:myCustomFilter(player)">{{player.name}}

CONTROLLER.js

// some theoretical conditional statement that return a boolean
$scope.otherCondition = true;


$scope.myCustomFilter = function(player) {
    return player.name.substring(0,1).match(/A/gi) && $scope.otherCondition;
}

所以我希望我的所有玩家都加载到 Angular 模型中,但我只想将玩家渲染到名称以字母“A”开头的 DOM 中。当我尝试做这样的事情时,我的控制台通知我 player 未定义。我是否需要编写自定义过滤器才能实现此目的(通过 angular.module().filter())?

最佳答案

这是一个工作 fiddle :http://jsfiddle.net/orlenko/jV6DK/

Html 代码(完全按照 Karl Zilles 的建议):

<div ng-app>
    <div ng-controller="MyController">
        <h2>Names starting with "A":</h2>
        <ul>
            <li ng-repeat="player in players | filter:myCustomFilter">{{player.name}}</li>
        </ul>
        <h2>All Names:</h2>
        <ul>
            <li ng-repeat="player in players">{{player.name}}</li>
        </ul>
    </div>
</div>

Javascript:

function MyController($scope) {
    $scope.players = [{
        name: 'Arthur'        
    }, {
        name: 'William'
    }, {
        name: 'Bertha'
    }, {
        name: 'Alice'
    }];

    $scope.otherCondition = true;

    $scope.myCustomFilter = function(player) {
        return player.name.substring(0,1).match(/A/gi) && $scope.otherCondition;
    }
}

Result

关于javascript - ngRepeat 对象上的高级 AngularJS 自定义过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17118180/

相关文章:

javascript - 切换全屏退出

javascript - angularjs 观看单选按钮,用于更改仅在第一次选择时工作

javascript - 在 Controller 功能内访问 ng-repeat 范围

javascript - AngularJS - 从无序列表中省略用户

javascript - arcTo 有时不会在调整大小时绘制

javascript - 动态添加元素到加载的 svg 文件

javascript - 更改 Javascript 时更新文本框

javascript - Angular 嵌套重复中断指令(packery + dragabilly)

android - ionic : Why the Android keyboard "next" button try to validate a form?

angularjs - Ng-Select 在 Ng-Select 中从第一个选择框中选择下一个值