angularJS指令名称是唯一的(或不是)?

时间:2016-09-08 06:59:51

标签: javascript angularjs angularjs-directive

找到解释angularJS指令的amazing video。但是,有一件事我听说我有一个问题。

“在角度指令中,名称不是唯一的,因此我们需要支持这样一个事实:对于每个名称,可能有几个指令工厂。”

^我不确定这个。主持人是否说同一指令名称可以重新声明两次(具有不同的工厂功能)?类似下面的代码。

app.directive('myDirective', function() {
  return {
    template: '<h1>hello</h1>'
  }
});

app.directive('myDirective', function() {
  return {
    template: '<h1>hi</h1>'
  }
});

然而,像这样的代码似乎抛出一个错误..如果有人能澄清一个,那将是很好的。)angularJS是否为每个指令存储多个工厂函数?和b。)如果可能的话,何时何地会我们做这样的事情?

1 个答案:

答案 0 :(得分:0)

根据angular tips,您可以拥有2个具有相同名称的指令,它们将协同工作。 在评论中提到你不能有孤立的范围或需要控制器。

我尝试使用具有相同名称和不同模板的2指令,并使用了第一个模板,没有错误(jsfiddle)。

<div ng-app="ui.directives">
   <my-d></my-d>
</div>


var dirs = angular.module('ui.directives', []);
dirs.directive('myD',
  function() {
    return {
      restrict: 'E',
      template: 'hey'
    };
  }
);
dirs.directive('myD',
  function() {
    return {
      restrict: 'E',
      template: 'hello',
    };
  }
);

你的错误是什么?尝试添加一个jsfiddle