Javascript 嵌套指令引发错误:[$compile:multidir]

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

我有一个非常简单的嵌套指令,它只是抛出一个错误。我可以毫无错误地调用base指令,但是当我添加调用base指令的指令时,我得到了错误

<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中删除了它,所以现在看来我也不能在更高级别的指令中使用模板。我不知道如何创建一个带有指令的小部件。。。嗯,这是一个不同的问题,第一个错误是转换,更改后,错误是模板。