angular js的雙向數據綁定,在開發中起到的作用灰常大,但是,並不是所有時候都能起作用。
找了下資料發現,雙向數據綁定其實也就是當模型發生了變化的時候,重繪了DOM,使你看到數據被更新了,引發模型變化的情況有:
1,dom事件;
2,xhr響應觸發回調;
3,瀏覽器的地址變化;
4,計時器觸發回調;
以上的某一個情況發生,都會觸發模型監控機制,同時調用了$apply方法,重繪了dom;通常情況下,我們使用的一些指令或服務,如$http,$timeout,$location等都會調用$apply方法,
從而使用dom被重繪,數據得到更新,實現了雙向數據綁定。
而在有些情況下,比如回調里,
回調函數里執行的方法被不會觸發$apply方法。假如當你點擊打了比較input select radio等等,觸發了模型監控,值也隨之更新了。
此時需要手動調$scope方法,使dom重繪。
function b(){
//方法1
$scope.b='b';
$scope.$apply();
//方法2
/**$scope.$apply(function(){
$scope.b='b';
})**/
}