扫码关注官方订阅号
有2个兄弟指令和,hello指令操作后world指令的数据,使得world指令的数据发生变化,从而改变UI界面。现在world指令里有2个定时任务,hello指令要怎么停止world指令里的定时任务再重新打开或者重新设定定时任务?html:
是这样的,在angular1中,我们可以通过事件系统来搭建两个不同指令之间的“桥梁”
angular1
在你的case里,你就可以在hello指令里,先注入$rootScope,然后通过她向下广播一个事件,例如:
hello
$rootScope
$rootScope.$broadcast('stop-interval');
然后在world指令中,拿到link函数的第一个参数scope,然后通过她注册一个stop-interval的事件监听,例如:
world
link
scope
stop-interval
app.directive('world', function(){ return { restrict: 'e', scope: {}, link: function(scope, element, attrs){ scope.$on('stop-interval', function(){ //在这里,放心大胆的取消你之前已经开启的interval吧 }); } }; });
你描述的第一句话,我读了两遍,都没看明白……不过大概知道意思,希望能帮到你。
首先,这两个指令如果在某个控制器内,你可以传递相同的属性来进行数据的控制。比如:
$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开关。 这个你监控控制器里的值就可以了啊。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
是这样的,在
angular1中,我们可以通过事件系统来搭建两个不同指令之间的“桥梁”在你的case里,你就可以在
hello指令里,先注入$rootScope,然后通过她向下广播一个事件,例如:然后在
world指令中,拿到link函数的第一个参数scope,然后通过她注册一个stop-interval的事件监听,例如:你描述的第一句话,我读了两遍,都没看明白……不过大概知道意思,希望能帮到你。
首先,这两个指令如果在某个控制器内,你可以传递相同的属性来进行数据的控制。比如:
这样,任意指令里的值改变都可以监控的到。
当然,你也可以给这两个指令单独写一个控制器指令,也就是父指令。比如:
,然后再在你的子指令里去require:'^fatherDirective'。
这样也可以实现封装然后在内部单独处理数据。
其次说改变UI,当然在控制器内,绑定对应的ng-class or ng-style, ng-show 等等都可以实现控制UI变化,如果是一整片的代码,则最好抽离出来做成单独的模板文件或者放到$tempalteCache里都可以。
最后说实现$interval开关。 这个你监控控制器里的值就可以了啊。