我正在編寫一個自定義的Angular過濾器,它隨機大寫傳遞給它的輸入。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個摘要動作。但輸入只被過濾器調用一次,對吧?
任何幫助表示讚賞。
你有沒有檢查過我的答案?它根本沒有幫助,我想刪除它。但是,我覺得這是非常好的信息,我們應該「記憶」這樣的過濾器,以保持數據轉換與修復無限摘要錯誤的邏輯分離。代碼非常乾淨。我真的很感激你的反饋。請注意我的解決方案不涉及更改您的代碼,這很好。 – m59