创建指令时,我遇到以下错误。
我收到以下错误
13642错误:[$ compile:multidir]多个指令[myDirective(module:myApp),myDirective(module:myApp)]要求提供模板:
我是指导创作的新手。你能解释一下吗?
更新
删除templateUrl后,错误消失了。但价值没有呈现。如答案所述,这是因为isolated scope
而不是shared scope
的创建。
<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;
答案 0 :(得分:1)
您正在尝试为同一指令(template和templateUrl)定义两个模板。删除其中一个,它将解决您的错误
编辑:
在指令中指定本地范围时,您正在创建隔离范围。 This是一个很好的资源,可以更多地了解角度
中的指令范围答案 1 :(得分:0)
当您意外定义两个具有相同名称的指令/组件时,可能会发生类似的错误。然后Angular将尝试在元素上应用两者,并且错误将显示相同的名称,而实际上它们是不同的指令。