具有多个指令的元素的隔离范围

时间:2016-08-17 03:34:36

标签: javascript angularjs angularjs-directive scope angularjs-scope

长话短说,我有一个指令,通过一个简单的例子,使用指令对元素的属性进行权限检查:

演示:https://jsfiddle.net/suunyz3e/285/

app.directive('test', function() {    
    return {        
        restrict : 'A',
        scope : true,
        controllerAs : '$ctrl',
        bindToController : true,
        controller : function($attrs) {
            this.test = $attrs.test || '';
        }
    };
});

以上只是使用元素中的属性test并将其绑定到控制器。

这适用于这些值:

<div test="v">{{$ctrl | json }}</div>
<div test="va">{{$ctrl | json }}</div>
<div test="vb">{{$ctrl | json }}</div>
<div test="vc">{{$ctrl | json }}</div>

但是,将相同属性添加到已具有隔离范围的现有元素将触发错误。因此,在指令上设置scope: false显然会关闭隔离范围,但是这只会将所有4个元素设置为最后使用的指令,它也将继承范围。 vc是所有4的值。

一个非常简单的解决方案是将元素包装在另一个div中并向其中添加属性,但有时它是不可能的。

有没有办法将数据存储在元素上,并使用角度表达式检索它而不需要隔离范围,但是每个元素的数据仍然应该被隔离?

0 个答案:

没有答案