Javascript 嵌套指令引发错误:[$compile:multidir]
我有一个非常简单的嵌套指令,它只是抛出一个错误。我可以毫无错误地调用base指令,但是当我添加调用base指令的指令时,我得到了错误Javascript 嵌套指令引发错误:[$compile:multidir],javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,我有一个非常简单的嵌套指令,它只是抛出一个错误。我可以毫无错误地调用base指令,但是当我添加调用base指令的指令时,我得到了错误 <div ng-controller="MainController"> <base-directive>This is the base directive</base-directive> <my-directive>this is my directive</my-directive&g
<div ng-controller="MainController">
<base-directive>This is the base directive</base-directive>
<my-directive>this is my directive</my-directive>
</div>
以下是错误:
.directive('myDirective', function() {
return {
restrict: 'E',
replace: true,
scope: {
text: '@'
},
template : '<base-directive>{{text}}</base-directive>'
}
})
.controller('MainController', ['$scope', function($scope) {
}])
<div ng-controller="MainController">
<base-directive>This is the base directive</base-directive>
<my-directive text="this is my directive"></my-directive>
</div>
Error: [$compile:multidir] Multiple directives [myDirective, baseDirective] asking for template on: <base-directive text="this is my directive">
错误:[$compile:multidir]多个指令[myDirective,baseDirective]请求对以下对象进行转换:
$compile/multidir?p0=myDirective&p1=baseDirective&p2=transclusion&p3=%3Cbase directive%3E
在REGEX_STRING_REGEXP angular.js:68处
at AssertNodeUpplicate angular.js:8065
在applyDirectivesToNode.js:7480
在compileNodes angular.js:7117
在compileNodes angular.js:7129
在compileNodes angular.js:7129
在编译angular.js:7024时
在angular.js:1519
范围$get.Scope.$eval angular.js:15236
在Scope.$get.Scope.$apply angular.js:15335
我想做的是:
我希望创建一些基本指令来表示UI的一部分,以及一些更高级别的指令来调用这些基本指令来构建一个完整的小部件
更新1-无多重转换
正如@Claies所建议的,我不能有多个转义,但它必须不止于此,因为即使我在文本中传递这个版本,并且只在base中有转义,我也会得到错误:
.directive('myDirective', function() {
return {
restrict: 'E',
replace: true,
scope: {
text: '@'
},
template : '<base-directive>{{text}}</base-directive>'
}
})
.controller('MainController', ['$scope', function($scope) {
}])
<div ng-controller="MainController">
<base-directive>This is the base directive</base-directive>
<my-directive text="this is my directive"></my-directive>
</div>
Error: [$compile:multidir] Multiple directives [myDirective, baseDirective] asking for template on: <base-directive text="this is my directive">
您可能希望首先使用非缩小角度,以获得一条更有意义的错误消息Multiple Directive[myDirective,baseDirective]请求转换:在您的情况下,谢谢,我用更可读的形式更新了问题。您不能嵌套转换。由于转换替换了innerHTML,因此只能将其应用于最内层的元素。我在更新1中删除了它,所以现在看来我也不能在更高级别的指令中使用模板。我不知道如何创建一个带有指令的小部件。。。嗯,这是一个不同的问题,第一个错误是转换,更改后,错误是模板。