【发布时间】:2015-08-05 14:56:27
【问题描述】:
我有两个指令,它们都有一个独立的范围。我想在我的子指令中要求父指令,然后能够观察父级的范围变量是否发生变化。我不想修改孩子中的变量,我只想能够读取它。
我希望能够添加两个都可以访问列表的不同孩子,但我不想将列表绑定到每个孩子。下面的示例中缺少的是一种查看绑定到父级的列表的方法。我可以传入原始列表,但一旦更新,孩子的模型就会过时。
父指令:
angular
.module('app.parent', [])
.directive('parent', parent);
function parent() {
var directive = {
restrict: 'EA',
transclude: true,
template: '<div>parent <pre>{{vm.list}}</pre><ng-transclude></ng-transclude> </div>',
scope: true,
controller: ParentController,
controllerAs: 'vm',
bindToController: {
config: "=",
list: "="
}
};
return directive;
function ParentController() {
var vm = this;
}
}
子指令:
angular
.module('app.parent.child', ['app.parent'])
.directive('child', child);
function child() {
var directive = {
restrict: 'EA',
require: ['^^parent', '^child'],
template: '<div>child<pre>{{vm.list}}</pre></div>',
scope: true,
controller: ChildController,
link: linkFunc,
controllerAs: 'vm',
bindToController: {
config: "="
}
};
return directive;
function ChildController() {
var vm = this;
}
function linkFunc(scope, element, attrs, ctrls) {
var parentController = ctrls[0];
var vm = ctrls[1];
vm.list = parentController.list;
}
}
我用上面的代码做了一个Plunkr。我正在寻找一个很好的模式来解决我遇到的问题。两个指令都有自己独特的配置对象,其中包含特定于指令的配置。
【问题讨论】:
标签: angularjs angularjs-directive