Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AngularJS指令模板能否呈现另一个指令?_Angularjs_Angularjs Directive - Fatal编程技术网

AngularJS指令模板能否呈现另一个指令?

AngularJS指令模板能否呈现另一个指令?,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我有一个指令,模板包含另一个指令: var myModule = angular.module('mymodule', []); myModule.directive('directive1', function() { return { restrict: 'E', scope: { config: '@' }, template: '<div ng-controller="mycontroller",

我有一个指令,模板包含另一个指令:

var myModule = angular.module('mymodule', []);

myModule.directive('directive1', function() {
    return {
       restrict: 'E',
       scope: {
          config: '@'
       },
       template: '<div ng-controller="mycontroller", ng-init={{config}}><directive2 config={{config}}></directive2></div>'
    }
}
var myModule=angular.module('myModule',[]);
myModule.directive('directive1',function(){
返回{
限制:'E',
范围:{
配置:'@'
},
模板:“”
}
}
代码有点奇怪,directive1的作用就像一个“包装器”,它接受配置,然后将其传递给“mycontroller”和directive2

我试过了,但不知何故mycontroller没有接受配置;它说配置是未定义的

只是想知道它是在角度上支持还是有更好的方法来做到这一点


谢谢。

当然,您可以使用嵌套指令

但是您的指令模板中几乎没有错误。请看下面的示例,并相应地修复您的模板

.directive('directive1', function() {
    return {
       restrict: 'E',
       scope: {
          config: '='
       },
       template: '<div>Config1:{{config}}<directive2 config="config"></directive2></div>',
       link: function(scope) {
         scope.config = {
           test: 'from directive1'
         };
       }
    }
})

.directive('directive2', function() {
    return {
       restrict: 'E',
       scope: {
          config: '='
       },
       template: '<div>config2: {{config}}</div>'
    }
});
.directive('directive1',function(){
返回{
限制:'E',
范围:{
配置:'='
},
模板:“Config1:{{config}}”,
链接:功能(范围){
scope.config={
测试:“来自指令1”
};
}
}
})
.directive('directive2',function(){
返回{
限制:'E',
范围:{
配置:'='
},
模板:'config2:{{config}}'
}
});

最后,这里是一个显示嵌套指令的示例。

这里的问题是,您正在使用指令模板中的
ng controller=“mycontroller”
创建一个新控制器


ng controller创建了一个新的作用域,因此配置对象不存在于mycontroller的作用域中。如果您只需删除
ng controller=“mycontroller”
,它就会工作。

您需要在属性周围添加引号。此外,html属性之间不需要逗号。