1. 程式人生 > >AngularJS 為什麽 我在controller裏修改了 變量的值,dom 沒有改變

AngularJS 為什麽 我在controller裏修改了 變量的值,dom 沒有改變

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 沒有改變