AngularJS多指令资源争用错误

时间:2015-12-08 08:33:21

标签: angularjs angularjs-directive

我目前正在使用优秀的AngularJS JumpStart with Dan Wahlin课程在Udemy学习AngularJS。我在第7节 - 奖金:开始构建自定义指令。

我已经定义了一个运行正常的Hello World指令;然后我定义了一个新指令,以便我可以了解共享与隔离范围。

一旦我包含第二个指令,我就会收到以下错误:

Error: [$compile:multidir] Multiple directives [helloWorld, helloWorld] asking for template on: <hello-world>
http://errors.angularjs.org/1.4.8/$compile/multidir?p0=helloWorld&p1=&p2=helloWorld&p3=&p4=template&p5=%3Chello-world%3E

Here's a Plunker

如果我注释掉定义其中一个的脚本,那么另一个可以工作。

为什么会这样?我已经明确地将两个指令命名为不同,那么为什么Angular会抛出一个错误,基本上说我已经两次声明了相同的指令?

2 个答案:

答案 0 :(得分:1)

1)你忘记在指令中添加“plain:true”(如果你直接把你的html代码放在模板中你必须把“plain:true”,否则使用templateUrl到你的html文件)

2)问题来自于您创建两次相同角度模块的事实:

   var directives = angular.module('app').directives;

我更新你的plunker http://plnkr.co/edit/cYkgdYcHXGlbtMRJHRw2?p=preview

答案 1 :(得分:0)

我认为问题是定义directives变量并且每次都将它添加到指令中。 更流行的定义指令的方法是:

var app = angular.module('app');
app.directive('helloWorld', ....);

或者如果您喜欢它,可以将所有指令放在同一个文件中,或者将var directives = angular.module('app').directives移动到app.js