AngularJS中的指令与指令通信?
发布时间:2020-12-17 07:36:53 所属栏目:安全 来源:网络整理
导读:我已经知道您可以在指令中设置控制器,而其他指令可以调用该控制器上的功能.以下是我当前的指令: app.directive("foobar",function() { return { restrict: "A",controller: function($scope) { $scope.trigger = function() { // do stuff }; },link: funct
我已经知道您可以在指令中设置控制器,而其他指令可以调用该控制器上的功能.以下是我当前的指令:
app.directive("foobar",function() { return { restrict: "A",controller: function($scope) { $scope.trigger = function() { // do stuff }; },link: function(scope,element) { // do more stuff } }; }); 我知道我可以这样称呼: app.directive("bazqux",require: "foobar",element,attrs,fooBarCtrl) { fooBarCtrl.trigger(); } }; }); 但是,我想要能够从任何指令调用触发器,而不仅仅是我自己的定制触发器,如下所示: <button ng-click="foobar.trigger()">Click me!</button> 如果这不行,有没有办法引入第三个指令来实现呢?喜欢这个? <button ng-click="trigger()" target-directive="foobar">Click me!</button> 谢谢!
完成任何组件之间的应用程序范围通信的一种简单方法是使用全局事件(从$rootScope发出).例如:
JS: app.directive('directiveA',function($rootScope) { return function(scope,attrs) { // You can attach event listeners in any place (controllers,too) $rootScope.$on('someEvent',function() { alert('Directive responds to a global event'); }); }; }); HTML: <button ng-click="$emit('someEvent')">Click me!</button> 在这里,您从子范围发出一个事件,但最终会到达$rootScope并运行上一个监听器. 这是一个现场示例:http://plnkr.co/edit/CpKtR5R357tEP32loJuG?p=preview (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |