1

我创建了一个具有隔离范围的指令:

directive("myDirective",function() {
    return {
        restrict: "A",
        scope: {aaa: '='},
        link: function(scope, elem) { }
    };
})

该指令运行良好,但它会阻止同一元素上的所有其他指令起作用......

我已经在这个 jsfiddle 上重现了这个问题:http: //jsfiddle.net/ironshay/k5ndr/

我正在使用角度 1.0.7。

难道我做错了什么?还是某种角度错误?

4

2 回答 2

3

问题是您已经通过在指令上使用 scope: {} 创建了一个子范围。所以 foo 变量不再在那个范围内,它在父级上。通过使用 $parent.foo 一切正常:

    <input type="text" placeholder="with directive" ng-disabled="!$parent.foo || $parent.foo == ''" my-directive func="myFunc()" />

jsfiddle:http: //jsfiddle.net/k5ndr/2/

于 2013-10-16T12:04:44.403 回答
1

您正在创建隔离范围,我认为这会导致其他指令也获得隔离范围。

您可以像执行myFunc函数一样尝试将 foo 变量传递给隔离范围。

 <input type="text" placeholder="with directive" foo='foo' ng-disabled="!foo || foo == ''" my-directive func="myFunc()" /> 

我试图为同样的创建一个小提琴

http://jsfiddle.net/njXjj/

于 2013-10-16T12:13:19.433 回答