【发布时间】:2014-02-27 11:19:43
【问题描述】:
我正在编写一个自定义 Angular 过滤器,它随机将传递给它的输入大写。
代码如下:
angular.module('textFilters', []).filter('goBananas', function() {
return function(input) {
var str = input;
var strlen = str.length;
while(strlen--) if(Math.round(Math.random())) {
str = str.substr(0,strlen) + str.charAt(strlen).toUpperCase() + str.substr(strlen+1);
}
return str;
};
});
在我看来,我这样称呼它:
<a class='menu_button_news menu_button' ng-href='#/news'>
{{"News" | goBananas}}
</a>
它有效,但在我的控制台中我看到了一个 rootScope:infdig (infinite digest) 循环。
我在理解为什么会发生这种情况以及我能做些什么来解决它时遇到了一些麻烦。如果我理解正确,这是因为该函数调用了超过 5 个摘要操作。但是输入只被过滤器调用一次,对吧?
任何帮助表示赞赏。
【问题讨论】:
-
你看过我的回答吗?一点用都没有,想删。但是,我觉得这是非常好的信息,我们应该
memoizing这样的过滤器来保持数据转换与修复无限摘要错误的逻辑分开。这样代码就干净多了。我非常感谢您的反馈。请注意,我的解决方案不涉及更改您的代码,效果很好。
标签: angularjs