angular一代,不同directives之间怎么操作$interval?

有2个兄弟指令<hello>和<world>,hello指令操作后world指令的数据,使得world指令的数据发生变化,从而改变UI界面。
现在world指令里有2个定时任务,hello指令要怎么停止world指令里的定时任务再重新打开或者重新设定定时任务?
html:

<hello></hello>
<world></world>


MYYA
浏览 437回答 1
1回答

交互式爱情

是这样的,在angular1中,我们可以通过事件系统来搭建两个不同指令之间的“桥梁”在你的case里,你就可以在hello指令里,先注入$rootScope,然后通过她向下广播一个事件,例如:$rootScope.$broadcast('stop-interval');然后在world指令中,拿到link函数的第一个参数scope,然后通过她注册一个stop-interval的事件监听,例如:app.directive('world',&nbsp;function(){&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;restrict:&nbsp;'e',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scope:&nbsp;{},&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;link:&nbsp;function(scope,&nbsp;element,&nbsp;attrs){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scope.$on('stop-interval',&nbsp;function(){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//在这里,放心大胆的取消你之前已经开启的interval吧 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;}; });
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript