3
<input type='text' ng-model='foo' my-dir='customFunction' />
{{foo}}
.directive('myDir',function(){
scope:{ customFunc : "&myDir"},
});
现在范围将被myDir
覆盖,并且foo不会在屏幕上更新。但是仍然每个具有my-dir
属性的控件在一个隔离范围内应该有customFunction
。如何从属性指令更改元素的范围?
可能吗?
究竟是你想实现什么目标?您是否试图将指令附加到输入字段,并且您希望指令能够在父范围上调用方法?如果是这样,你不需要隔离作用域 - 隔离范围[与ng-model有问题](http://stackoverflow.com/questions/11896732/ngmodel-and-component-with-isolated-scope)。 –
我试图让一个指令限制为可以调用该属性中设置的任意函数的属性 – Agzam
根据指令的使用位置决定如何编写它。如果该指令不会与其他指令一起使用,则可以使用隔离范围。如果它将与其他指令(如ng-repeat,ng-model等)一起使用,则可能需要创建一个不创建新范围或创建子范围(不是隔离范围)的指令。对于非隔离情况,您可以通过属性值传递函数的名称,然后在链接函数中使用[$ eval]调用它(http://docs.angularjs.org/api/ng.$rootScope .scope#$ eval):'scope。$ eval(attrs.myDir)' –