有2个兄弟指令<hello>和<world>,hello指令操作后world指令的数据,使得world指令的数据发生变化,从而改变UI界面。
现在world指令里有2个定时任务,hello指令要怎么停止world指令里的定时任务再重新打开或者重新设定定时任务?
html:
<hello></hello>
<world></world>
有2个兄弟指令<hello>和<world>,hello指令操作后world指令的数据,使得world指令的数据发生变化,从而改变UI界面。
现在world指令里有2个定时任务,hello指令要怎么停止world指令里的定时任务再重新打开或者重新设定定时任务?
html:
<hello></hello>
<world></world>
你描述的第一句话,我读了两遍,都没看明白……不过大概知道意思,希望能帮到你。
首先,这两个指令如果在某个控制器内,你可以传递相同的属性来进行数据的控制。比如:
$scope.value = someValue;
<world prop="value"></world>
<hello prop="value"></hello>
这样,任意指令里的值改变都可以监控的到。
当然,你也可以给这两个指令单独写一个控制器指令,也就是父指令。比如:
app.directive('fatherDirective',function(){
return{
restrict:'AE',
controller : ['$scope',function($scope){
this.set = function(){
...
};
this.get = function(){
...
};
}]
}
})
,然后再在你的子指令里去require:'^fatherDirective'。
这样也可以实现封装然后在内部单独处理数据。
其次说改变UI,当然在控制器内,绑定对应的ng-class or ng-style, ng-show 等等都可以实现控制UI变化,如果是一整片的代码,则最好抽离出来做成单独的模板文件或者放到$tempalteCache里都可以。
最后说实现$interval开关。 这个你监控控制器里的值就可以了啊。
13 回答13k 阅读
7 回答2.1k 阅读
3 回答1.3k 阅读✓ 已解决
6 回答1.2k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
6 回答1.1k 阅读
是这样的,在
angular1
中,我们可以通过事件系统来搭建两个不同指令之间的“桥梁”在你的case里,你就可以在
hello
指令里,先注入$rootScope
,然后通过她向下广播一个事件,例如:然后在
world
指令中,拿到link
函数的第一个参数scope
,然后通过她注册一个stop-interval
的事件监听,例如: