我创建了一个带有隔离范围的指令:
directive("myDirective",function() {
return {
restrict: "A",
scope: {aaa: '='},
link: function(scope, elem) { }
};
})
该指令效果很好,但它可以阻止同一元素上的所有其他方法工作......
我在这个jsfiddle上重现了这个问题:http://jsfiddle.net/ironshay/k5ndr/
我正在使用角度1.0.7。
我做错了吗?或者它是某种有角度的错误?
答案 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()" />
我试图为同样的
创造一个小提琴