1
在我們當前的Angular應用程序中,我發現了一個奇怪的行爲。例如:角度始終運行檢查
angular.module('app.book')
.directive('ddBook', function() {
return {
scope: {},
replace: true,
controller: 'BookCtrl',
controllerAs: 'ctrl'
};
})
.controller('BookCtrl',
[
'$scope',
function ($scope) {
$scope.isPrebookingAllowed = function() {
//if I set here break point it will always be hited
return true;
};
}
]);
這個指令
<div ng-show="isPrebookingAllowed()">
//something goes here
</div>
的問題是,如果我將打破isPrebookingAllowed方法點,它會永遠打它的一些HTML。這是接縫,我有無限循環,並且觸發了這個指令摘要循環,但是我沒有對UI進行任何更改。
如果您沒有對UI進行任何更改(無意或其他方式),並且您沒有在其他地方調用isPrebookingAllowed,那麼您將沒有問題。既然你做了,isPrebookingAllowed的內容是相關的,你的問題不能被解決沒有看到你如何寫它。 – Neil
也只是爲了說明一個觀察者註冊到'isPrebookingAllowed'感謝'ngShow'。這意味着,在整個應用程序中運行摘要循環時,角度將通常檢查其所有註冊的觀察者以更新任何數據綁定。由於'isPrebookingAllowed'是一個函數,它意味着它將被執行。我說通常是因爲角可能會優化性能,但它確實意味着'isPrebookingAllowed'可以在您沒有做任何指令時直接調用它。至少這是我對消化週期的理解。 – ste2425
'isPrebookingAllowed'函數在每個摘要循環中得到調用.. t;擔心它..它的角度正常 –