我有以下行动
在我的视图中ng-click - > ,其中会调用显示jQuery Qtip的 jQuery ajax 函数 - > 在Qtip弹出窗口中,我在元素上有 ng-click - >执行 $ http帖子并有一些回调来更新$ scope值。
所有这些事情都正确地发生了。但是根据最后阶段回调中的更改,更新不会反映在视图中。
我在视图中有“ng-mousemove”功能。因此,每当我移动鼠标时,视图中的更新都会被反映出来。
我在这里做错了什么?是因为角度和非角度之间的过渡?任何人都可以帮我解决这个问题吗?
答案 0 :(得分:36)
正如docs所解释的那样:
$ apply()用于从外部执行角度表达式 角度框架。 (例如,来自浏览器DOM事件, setTimeout,XHR或第三方库)。因为我们正在呼唤 我们需要执行适当范围生命周期的角度框架 异常处理,执行手表。
所以如果你有像
这样的 jQuery代码$('#myDiv').on('click', function() {
// do stuff
$scope.$apply();
});
答案 1 :(得分:4)
你必须告诉角度Js $scope.$apply()
发生了什么变化。
以下是一篇很好的博客,内容为:http://www.yearofmoo.com/2012/10/more-angularjs-magic-to-supercharge-your-webapp.html#apply-digest-and-phase