动态添加或复制指令不会从父作用域获取变量值

时间:2014-07-31 14:39:15

标签: javascript angularjs angularjs-directive

我正在试图弄清楚如何动态复制我的指令,同时维护来自父作用域的变量。

这是一个让它更清晰的小提琴

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>'
        };
    })

基本上,当新指令显示时,它不会从我的父控制器中获取值。

关于如何接近它的想法?另外,我还应该在指令上有控制器属性吗?我不确定我是否需要它以及何时使用它。

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以直接访问父作用域。 只需更改此行

即可
'ng-options="opt as opt for opt in options"' + 

'ng-options="opt as opt for opt in foobs"' + 

并删除对父

的引用

JSFiddle

答案 1 :(得分:0)

想出来。我只需要在编译时添加$ parent

var d = $compile('<yodirective></yodirective>')(scope.$parent);