我发现自己经常重复以下结构,我想简化它:
<container>
<clock property="data"></clock>
<calendar property="data"></calendar>
<alert property="data"></alert>
</container>
使用相对指令
app.directive('clock', function(){
return {
restrict: 'E',
scope: {
'property': '='
}
}
});
如何从每个项目中删除property =“data”并最终在容器级别移动它?
答案 0 :(得分:0)
您可以在父指令中设置property="data"
并通过其控制器使其可用
您的容器指令
<container property="data">
app.directive('container', function(){
return {
restrict: 'E',
scope: {
'property': '='
},
controller: function($scope){
this.getData = function(){
return $scope.property;
}
}
}
});
您的孩子指令
<clock></clock>
app.directive('clock', function(){
return {
restrict: 'E',
require: '^container',
link: function(scope, elm, attrs, containerCtrl) {
console.log(containerCtrl.getData());
}
}
});
require
父指令并调用它的关联方法containerCtrl.getData()
来获取所需的值。
检查 Demo