我有一个监听$ scope。$ on的控制器,它会在触发时显示一个弹出窗口。它可以100%的时间从其他几个控制器$ rootScope。$ broadcast方法开始工作。但其中一个将无法工作。
控制器获取事件,并设置所需的$ scope变量,但页面不会更新,即使我触发$ scope。$ eval()。然后,如果我转到另一条路线,$ scope将最终渲染,并且模式将弹出该路线的顶部。我不知道我是否在angularjs中发现了一个错误,或者我遗漏了一些基本的错误。
抱歉,我不能包含代码,这是一个工作项目。
答案 0 :(得分:33)
您可能正在更改角度$ digest之外的$ scope。尝试将code making changes
替换为$scope.$apply(function(){ code making changes })
。有了这个,脏检查应该运行并更新所有。
答案 1 :(得分:10)
我建议使用:
$scope.$evalAsync(function() { // scope changes here });
这样你就不会遇到问题,例如在已经有摘要的情况下尝试调用apply。