多指令错误,但只添加了一个

时间:2016-06-27 21:37:32

标签: angularjs

创建指令时,我遇到以下错误。

我收到以下错误

  

13642错误:[$ compile:multidir]多个指令[myDirective(module:myApp),myDirective(module:myApp)]要求提供模板:

我是指导创作的新手。你能解释一下吗?

  1. 虽然我只使用一个指令,但它是说多个指令。这里的其他指令是什么?
  2. 如何解决此错误?
  3. 更新

    删除templateUrl后,错误消失了。但价值没有呈现。如答案所述,这是因为isolated scope而不是shared scope的创建。

    enter image description here

    
    
    <html>
    <head>
        <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.js"></script>
        <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular-resource.js"></script>
        
        <script type="text/javascript">
            //defining module
            var app = angular.module('myApp', ['ngResource']);
    
            //defining controller
            app.controller('myController', function ($scope) 
    	{
                $scope.myVal = 'A';
    
            });
    
     app.directive('myDirective', function () 
    {
        return {
            restrict: 'EA',      
            scope: {title: '@' },
            template: '<div>{{ myVal }}</div>',
            templateUrl: 'mytemplate.html',
            link: function ($scope, element, attrs) { } 
        }
    });
    
    
        </script>
    </head>
    <body ng-app="myApp">
        <div ng-controller="myController">
           <div my-directive></div>
        </div>
    </body>
    </html>
    &#13;
    &#13;
    &#13;

2 个答案:

答案 0 :(得分:1)

您正在尝试为同一指令(template和templateUrl)定义两个模板。删除其中一个,它将解决您的错误

编辑:

在指令中指定本地范围时,您正在创建隔离范围。 This是一个很好的资源,可以更多地了解角度

中的指令范围

答案 1 :(得分:0)

当您意外定义两个具有相同名称的指令/组件时,可能会发生类似的错误。然后Angular将尝试在元素上应用两者,并且错误将显示相同的名称,而实际上它们是不同的指令。