我有一个在我的自定义指令范围之外发生的点击事件,所以我没有使用"ng- click“属性,而是使用了一个jQuery.click()侦听器,并在我的范围内调用了一个函数,如下所示:
$('html').click(function(e) {
scope.close();
);
close()是一个简单的函数,如下所示:
scope.close = function() {
scope.isOpen = false;
}
在我看来,我有一个带有"ng-show“的元素绑定到isOpen,如下所示:
<div ng-show="isOpen">My Div</div>
在调试时,我发现close()正在被调用,isOpen被更新为false,但是AngularJS视图没有更新。有没有办法让我手动告诉Angular更新视图?或者,有没有一种更“角度”的方法来解决这个我看不到的问题?
发布于 2012-09-07 01:09:55
解决方案是打电话给..。
$scope.$apply();
...in我的jQuery事件回调。
发布于 2016-09-19 17:35:39
使用
$route.reload();
记得把$route
注入你的控制器。
发布于 2022-01-04 18:23:21
虽然下面的方法对我来说是有效的:
$scope.$apply();
它需要更多的设置和使用.$on
和.$broadcast
才能工作,或者可能需要使用$.watch
。
然而,下面的代码需要的代码要少得多,而且效果很好。
$timeout(function() {});
在更新作用域变量之后立即添加超时允许AngularJS意识到有更新并自行应用它。
https://stackoverflow.com/questions/12304728
复制相似问题