Angularjs js触发另一个指令

Angularjs js触发另一个指令,angularjs,Angularjs,我试图在指令之间创建一种通用切换功能,其中一个包含模板的指令在另一个指令发生事件之前不会呈现。关于如何将这些联系在一起,有什么建议吗 谢谢 实现这一点的方法有很多 A. 使用事件(但是要小心,当使用时,特别是在指令之间的交互时,您很容易丢失!这就是为什么我没有创建http://plnkr.co 更糟糕的是:代码A未经测试! 因此,请编辑此错误的情况下 在('myEvent',function(e,eargs){…})上使用$rootScope.$on 主指令 从某个指令分派事件: $rootS

我试图在指令之间创建一种通用切换功能,其中一个包含模板的指令在另一个指令发生事件之前不会呈现。关于如何将这些联系在一起,有什么建议吗


谢谢

实现这一点的方法有很多

A. 使用事件(但是要小心,当使用时,特别是在指令之间的交互时,您很容易丢失!这就是为什么我没有创建http://plnkr.co 更糟糕的是:代码A未经测试! 因此,请编辑此错误的情况下

  • 在('myEvent',function(e,eargs){…})上使用
    $rootScope.$on
    主指令
  • 从某个指令分派事件:
    $rootScope.$broadcast('myEvent',{foo:'bar'})
  • 记住在两个指令中都注入
    $rootScope
  • angular.module('myApp',[])
    .directive('masterDirective',function($rootScope,$compile/**injects here*/){
    var temp='

    ; 返回{ 限制:'E', 控制器:函数($scope$element){ 返回{ slaveLink:function(){ $element.append($compile(templ)($scope)); } } }, 链接:函数(范围、元素、属性){ scope.someVar=“我是一个模板,我出生并对世界可见,因为slaveDirective在我自己身上调用了一个函数。”; } }; }) .指令('slaveDirective',函数(){ 返回{ 要求:“^masterDirective”, 限制:'E', 链接:函数(范围、元素、属性、myMasterController){ myMasterController.slaveLink(); } }; });
    您应该提供一些代码!实现这一点的方法有很多……一些细节会有所帮助
    angular.module('masterDirective', [])
      .directive('masterDirective', function ($rootScope, $compile /**injects here*/) {
        var templ = '<p ng-bind="someVar"></p>';
        return {
          restrict: 'EA',
          scope: {},
          link: function (scope, element, attrs) {
            scope.someVar = "I am a template and I was born and visible to the world, because slaveDirective send me an event to do so.";
            $rootScope.$on('myEvent', function(e, eArgs) {
              // eArgs.myVar will be 'Jackson';
              element.append($compile(templ)(scope));
            });
          }
        }
      });
    
    angular.module('slaveDirective', [])
      .directive('slaveDirective', function ($rootScope) {
        return {
          restrict: 'EA',
          scope: {},
          link: function (scope, element, attrs) {
            $rootScope.$broadcast('myEvent', {myArg: 'Jackson'});
          }
        }
      });