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

Adding or duplicating directive dynamically does not get variable values from parent scope

本文关键字:作用域 获取 变量值 添加 复制 指令 动态      更新时间:2023-09-26

我想弄清楚我如何能够动态地复制我的指令,同时维护我的父范围的变量。

这里有一个小提琴使它更清晰

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

基本上,当新的指令得到显示,它不会从我的父控制器抓取值。

关于我应该如何处理的想法?此外,我是否也应该在指令上有一个控制器属性?我不太确定我需要它,也不知道什么时候用它。

谢谢!

您可以直接访问父作用域。修改这一行

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

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

并去掉对父

的引用

JSFiddle

明白了。我只需要在编译

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