首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我如何告诉AngularJS“刷新”?

我如何告诉AngularJS“刷新”?
EN

Stack Overflow用户
提问于 2012-09-07 00:47:33
回答 3查看 299.2K关注 0票数 182

我有一个在我的自定义指令范围之外发生的点击事件,所以我没有使用"ng- click“属性,而是使用了一个jQuery.click()侦听器,并在我的范围内调用了一个函数,如下所示:

代码语言:javascript
复制
$('html').click(function(e) {
  scope.close();
);

close()是一个简单的函数,如下所示:

代码语言:javascript
复制
scope.close = function() {
  scope.isOpen = false;
}

在我看来,我有一个带有"ng-show“的元素绑定到isOpen,如下所示:

代码语言:javascript
复制
<div ng-show="isOpen">My Div</div>

在调试时,我发现close()正在被调用,isOpen被更新为false,但是AngularJS视图没有更新。有没有办法让我手动告诉Angular更新视图?或者,有没有一种更“角度”的方法来解决这个我看不到的问题?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-09-07 01:09:55

解决方案是打电话给..。

代码语言:javascript
复制
$scope.$apply();

...in我的jQuery事件回调。

票数 333
EN

Stack Overflow用户

发布于 2016-09-19 17:35:39

使用

代码语言:javascript
复制
$route.reload();

记得把$route注入你的控制器。

票数 17
EN

Stack Overflow用户

发布于 2022-01-04 18:23:21

虽然下面的方法对我来说是有效的:

代码语言:javascript
复制
$scope.$apply();

它需要更多的设置和使用.$on.$broadcast才能工作,或者可能需要使用$.watch

然而,下面的代码需要的代码要少得多,而且效果很好。

代码语言:javascript
复制
$timeout(function() {});

在更新作用域变量之后立即添加超时允许AngularJS意识到有更新并自行应用它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12304728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档