长话短说,我有一个指令,通过一个简单的例子,使用指令对元素的属性进行权限检查:
演示: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中并向其中添加属性,但有时它是不可能的。
有没有办法将数据存储在元素上,并使用角度表达式检索它而不需要隔离范围,但是每个元素的数据仍然应该被隔离?