angularJS指令名是否唯一?

Are angularJS directive names unique (or not)?

本文关键字:唯一 是否 指令 angularJS      更新时间:2023-09-26

找到了这个神奇的视频,它解释了angularJS指令。然而,有一件事我听说我有一个问题。

"在angular中,指令名不是唯一的,所以我们需要支持这样一个事实,即每个指令名可能有几个指令工厂。"

^我不确定。演示者是否说相同的指令名称可以重新声明两次(使用不同的工厂函数)?类似下面的代码:

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

然而,像这样的代码似乎抛出一个错误…如果有人能澄清一下就太好了。angularJS是否为每个指令存储多个工厂函数?b。如果这是可能的,我们将如何以及何时做这样的事情?

根据angular的提示,你可以有两个名字相同的指令,它们会一起工作。在评论中提到,你不能有独立的作用域或需要一个控制器。

我尝试使用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