AngularJS 为什么 我在controller里修改了 变量的值,dom 没有改变
Posted 吴盼盼
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AngularJS 为什么 我在controller里修改了 变量的值,dom 没有改变相关的知识,希望对你有一定的参考价值。
\'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方法。
我主要看了这两篇文章:
以上是关于AngularJS 为什么 我在controller里修改了 变量的值,dom 没有改变的主要内容,如果未能解决你的问题,请参考以下文章
Angularjs列表项边距问题将ng-repeat元素与静态元素结合起来
为啥我在 AngularJS 中收到错误“ReferenceError:未定义类别”?
为啥我在 AngularJs 帖子中收到 400 个错误请求?
为啥我在 AngularJS 中的日期输入字段会抛出类型错误?