AngularJS 為什麽 我在controller裏修改了 變量的值,dom 沒有改變
阿新 • • 發佈:2017-12-07
sco ref ces tails iges round source 點擊 什麽
‘use strict‘ app.controller(‘xxxxx‘, function($scope) { $scope.aaaa =null; $scope.chooseImage = function(){ wx.chooseImage({ sourceType: [], success:function(res){ $scope.aaaa =1 } }); }; });
<p ng-click="chooseImage()">{{aaaa}}</p>
點擊後頁面aaaa的值並不會 改變為 1
因為 wx.chooseImage 這個方法是微信的API, 並不在angular context裏面,沒有調用apply方法。
$apply方法使用情景:AngularJS 外部的控制器(DOM 事件、外部的回調函數如 jQuery UI 空間等)調用了 AngularJS 函數之後,必須調用$apply。在這種情況下,你需要命令 AngularJS 刷新自已(模型、視圖等) ,$apply 就是用來做這件事情的。
之前看見同事寫個$timeout(function(){}) 就好了,也是好奇。原來angular在$timeout方法裏已經封裝了apply方法。
我主要看了這兩篇文章:
談談Angular關於$watch,$apply 以及 $digest的工作原理
《AngularJS》----$apply 與 $watch
AngularJS 為什麽 我在controller裏修改了 變量的值,dom 沒有改變