0
正確的方法是定期更新元素,而不是爲$ interval回調中的每個變量顯式地執行該操作?如何使用Angular更新綁定到函數的元素?
這將在以下情況下有用:元件的內容被綁定到一個函數,如下所示:
<p ng-bind="timeLeft()"></p>
的的timeleft()函數返回根據當前時間的值。它需要每20毫秒刷新一次。
編輯:通常ngBind更新很好,但我猜是因爲timeLeft()的結果只取決於時間傳遞,在這種情況下,它不。沒有下面的代碼,加載DOM後視圖不會更新,至少不會更新其他值。
我試過以下,它的工作原理:
$scope.updateView = function(){
if(!$scope.$$phase) { // To prevent this: "Error: [$rootScope:inprog] $digest already in progress"
$scope.apply();
}
}
$interval(function(){
$scope.updateView();
}, 50);
我注意到剛纔使用$間隔可能已經足夠了,在我的設置這個工程太:
$scope.updateView = function(){
}
$interval(function(){
$scope.updateView();
}, 20);
難道是可靠的使用最後的解決方案?
角JS提供了原生一個驚人的'bind'(無碼)。我不確定爲什麼要用某種計時器刷新。我想我不明白,你可能有很好的理由。 – MacKentoch
最後的解決方案很好。沒有必要調用$ apply,除非該方法將在angularjs之外被調用(即jQuery事件) – pixelbits