Angular customFilter函数运行两次

时间:2014-02-05 20:20:54

标签: javascript arrays angularjs

我正在尝试使用角度自定义过滤器过滤数组。

基本上我有一个绑定:{{ myData.winners | getWinnerString }}返回1-4之间任意长度的项目数组。如果数组长度大于1,我想根据数组长度返回一个自定义字符串,如“双向绑定”,“三向绑定”等。如果它只是1,我想按原样返回获胜者。这就是我所拥有的:

.filter('getWinnerString', function() {
    return function(array) {
        console.log(array);
        return array;
    }
});

当我运行它时,它循环遍历数组两次并将数组记录两次。任何想法为什么?此外,实际设置此函数以返回正确的字符串的任何帮助/方向都非常感谢,因为到目前为止我所尝试的一切都没有用。

2 个答案:

答案 0 :(得分:0)

如果我没记错filters,每次有$scope $digest时都会执行{{1}}。因此,随着应用程序的增长,它可能会执行更多的操作。

我找到了这个链接,我帮助您了解过滤器执行的工作原理:

http://www.bennadel.com/blog/2489-How-Often-Do-Filters-Execute-In-AngularJS.htm

答案 1 :(得分:0)

检查数组的length并根据比较返回结果字符串。

if (winners.length === 1) {
    return winners[0]; // return the only winner
} else {
    return numberString(winners.length) + " way tie";
}

角度过滤器只是在模板中转换/过滤日期的更好方法。将其视为具有一个参数writeOutWinnerString(winners)的函数。