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属性之间不需要逗号。