這兩天開發項目的時候遇到了一個問題,就是在controler裏面代碼命名執行了,但是頁面並沒有做任何的改變,大概就是用{{}}做雙向數據綁定,$scope做相應的改變操作,首先你要確保沒有其他的報錯,作用域$scope沒問題,然後你就可以考慮$apply()。重點說明:這個時候你肯定用的不是ng自己的東西,比如你用的是jq的或者是其他的第三方庫
$apply()函數可以從Angular框架的外部讓表達式在Angular上下文內部執行。例如,假設你實現了一個setTimeout()或者使用第三方庫並且想讓事件運行在Angular上下文內部時,就必須使用$apply()。
簡而言之,使用$scope.$apply()時可以從外部進入上下文。如果在事件被觸發時調用$apply(),就會使用Angular事件循環來運行它。如果沒有調用$apply(),就不會在事件循環內執行這個函數,而它會運行在Angular上下文外部
上面這兩段我是抄的,簡潔明瞭,在使用ng-指令的時候會默認調用$apply(),調用它會強制一次$digest(髒檢查)循環
試試這個吧
$scope.$apply(function(){
$scope.est = "Just A Test!"
})
最好用上面的這種裏面嵌套函數的方式使用
另外附上幾個相關文章的鏈接
ng性能調優的7個建議,ng-reapt雙向綁定超過2500個會變慢
http://www.csdn.net/article/2013-09-18/2816972-AngularJS-performance-tuning-for-long-list