我有一个封装对话框的指令,它几乎完全与周围的范围隔离:与之通信的唯一方法是触发事件。例如,通过单击按钮并触发其他示波器可能正在等待的相应事件,可以发出诸如“应用”,“保存”,“删除”或“关闭灯”等对话框命令。
由于我们不知道注册哪些范围来处理任何特定事件,我已经从$rootScope
一直广播对话框的命令事件,当然它可以工作。但是,如果事件处理程序更改了模型,则视图不会更新,因为事件触发后没有$apply
或$digest
。
这就是我的困境:从哪里拨打$digest
?或者我对整件事情都非常误导?
答案 0 :(得分:1)
自$broadcast is synchronous以来,我建议调用$ broadcast的代码在调用$ broadcast后调用$ rootScope。$ apply(),如果该代码在“AngularJS外部”运行。 (如果该代码在“Angular”内部运行,则不需要$ apply()。)