14

我有一个监听的控制器$scope.$on,它会在触发时显示一个弹出窗口。它可以通过其他几个控制器的$rootScope.$broadcast方法 100% 地工作。但是其中一个永远不会工作。

控制器获取事件,并设置$scope所需的变量,但页面不会更新,即使我触发$scope.$eval(). 然后,如果我去另一条路线,$scope最终将呈现,并且模态将弹出该路线的顶部。我不知道我是否在 angularjs 中发现了一个错误,或者我错过了一些基本的东西。

4

2 回答 2

36

您可能正在更改$scopeangular 的外部$digest()。尝试替换code making changes$scope.$apply(function(){ code making changes }). 有了这个,脏检查应该运行并更新所有内容。

于 2012-08-20T18:15:55.790 回答
14

我建议使用:

$scope.$evalAsync(function() { // scope changes here });

这样你就不会遇到问题,比如当摘要已经在进行中时尝试调用 apply。

于 2015-10-26T20:43:05.443 回答