我正在试图弄清楚如何动态复制我的指令,同时维护来自父作用域的变量。
这是一个让它更清晰的小提琴
http://jsfiddle.net/gdubdubs/FZ2hh/1/
m
yModule.directive('yodirective', function ($compile) {
return {
restrict:'E',
scope:{},
link: function(scope, element, attr, ctrl){
scope.options = scope.$parent.foobs;
scope.selectedOption;
scope.addNew = function(){
var d = $compile('<yodirective></yodirective>')(scope);
element.parent().append(d);
};
},
template:'<div>' +
'<select id="werp"' +
'ng-model="selectedOption"' +
'ng-options="opt as opt for opt in options"' +
'ng-change="popDemBottles()" type="text">' +
'<option value="">select</option>' +
'</select>' +
'</div><div><a ng-click="addNew()" href="#">ADD</a></div>'
};
})
基本上,当新指令显示时,它不会从我的父控制器中获取值。
关于如何接近它的想法?另外,我还应该在指令上有控制器属性吗?我不确定我是否需要它以及何时使用它。
谢谢!
答案 0 :(得分:0)
您可以直接访问父作用域。 只需更改此行
即可'ng-options="opt as opt for opt in options"' +
到
'ng-options="opt as opt for opt in foobs"' +
并删除对父
的引用答案 1 :(得分:0)
想出来。我只需要在编译时添加$ parent
var d = $compile('<yodirective></yodirective>')(scope.$parent);