在范围内具有回调的AngularJS指令可防止其他指令起作用

时间:2013-10-16 11:56:58

标签: angularjs angularjs-directive

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

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

该指令效果很好,但它可以阻止同一元素上的所有其他方法工作......

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

我正在使用角度1.0.7。

我做错了吗?或者它是某种有角度的错误?

2 个答案:

答案 0 :(得分:3)

问题是您已通过在指令上使用范围:{}创建了子范围。所以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/

答案 1 :(得分:1)

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

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

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

我试图为同样的

创造一个小提琴

http://jsfiddle.net/njXjj/