ale*_*nst 2 html javascript angularjs
我正在开发一个基于AngularJS的网页,有时候我需要改变路径(如果你愿意,可以选择shebang).问题是有时$location.path("/my_path_here")可行,但有时我需要在调用$scope.$apply()后调用$location.path以使webbrowser切换到新路径.
为什么会这样?
编辑:
看看这个问题和Misko的答案:AngularJS中的数据绑定是如何工作的?
该答案以技术细节解释了该过程.所以,我会用外行的话说出来.
AngularJS通过使用脏检查使自己工作,有角度正在观察的值集.每当发生重大事件时(点击,控制器中的函数调用),角度运行一个digest周期,比较观察值以查看是否有任何变化.如果有更改,则取决于观察者,angular将采取必要的操作(更新视图,触发回调,更新路径).
当你在控制器中使用默认指令而没有jquery事件处理时,你会没事的.但是,如果这样做,您需要知道您不在角度的摘要周期中.这意味着观察者在digest发生之前不会开火.
您需要知道何时更新正在监视的变量.主要是自定义DOM事件(或jquery事件).在这种情况下,您需要让角度知道某些事情发生了变化,并且需要重新检查发生了什么(即更新观察者).
这是scope.$apply() 在你改变了一些东西之后做的.
请记住,$apply()如果您已经处于角度的摘要周期中,则无法运行.它会抛出一个错误$digest already in progress.