我正在尝试使用角度自定义过滤器过滤数组。
基本上我有一个绑定:{{ myData.winners | getWinnerString }}
返回1-4之间任意长度的项目数组。如果数组长度大于1,我想根据数组长度返回一个自定义字符串,如“双向绑定”,“三向绑定”等。如果它只是1,我想按原样返回获胜者。这就是我所拥有的:
.filter('getWinnerString', function() {
return function(array) {
console.log(array);
return array;
}
});
当我运行它时,它循环遍历数组两次并将数组记录两次。任何想法为什么?此外,实际设置此函数以返回正确的字符串的任何帮助/方向都非常感谢,因为到目前为止我所尝试的一切都没有用。
答案 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)
的函数。