Angular指令在两个不同的文件中:只有一个将出现在视图中

时间:2016-06-30 21:26:09

标签: javascript angularjs angularjs-directive

我在两个文件中有两个几乎相同的指令。

文件一:

//firstTestDirective.js
angular.module('utility', [])
    .directive('firstTest', function() {
        return {
            restrict: 'AE',
            template: '<div>first test</div>'
        };
    });

文件二:

//secondTestDirective.js
angular.module('utility', [])
    .directive('secondTest', function() {
        return {
            restrict: 'AE',
            template: '<div>second test</div>'
        };
    });

这两个文件都包含在index.html中,以及一对调用它们的标记:

<body>
    ...
    <div first-test></div>
    <div second-test></div>
    ...
</body>
<script src=".../firstTestDirective.js"></script>
<script src=".../secondTestDirective.js"></script>

这应该很简单,但是这里出现了奇怪之处:在之后加载哪个脚本的指令另一个是唯一出现的脚本。

如上所述,我得到第二次测试,&#34;但不是&#34;第一次测试&#34;在我看来。如果我反转加载顺序......

<script src=".../secondTestDirective.js"></script>
<script src=".../firstTestDirective.js"></script>

...然后我会得到&#34;首先测试&#34;但不是&#34;第二次测试&#34;在我看来。

这个错误,或者它可能是什么,让我有点疯狂。

其他人遇到过类似问题吗?

P.S。在上面两个脚本之后加载了许多其他脚本,它们似乎都可以正常工作。 Chrome调试中没有错误,并且正在加载所有脚本。

1 个答案:

答案 0 :(得分:1)

添加其他指令时,不应再次重新创建模块,请使用1st {s}文件utility定义的模块secondTestDirective.js。基本上当你在第二个文件中有angular.module('utility', [])时会发生什么,它会用utility模块清除所有已注册的组件。

angular.module('utility') //used already created module
.directive('firstTest', function() {