Augluar 自定义指令中, scope配置中的@、=和&修饰符有什么区别?
参考答案:
在 Angular 中,当你创建一个自定义指令时,你可以使用 scope
配置来指定指令与父控制器之间的数据绑定。scope
配置可以接收一个对象,其中键是本地作用域上的属性名,值是父控制器上的属性名。同时,你可以使用 @
、=
和 &
修饰符来指定数据绑定的不同方式。
-
@
(或=attr
):字符串绑定- 使用
@
修饰符,指令的作用域属性将绑定到父控制器上对应属性的字符串值。换句话说,指令将接收到父控制器属性的一个字符串表示。 - 例如,如果你有一个父控制器属性
name
,你可以使用@name
在指令的作用域中接收一个字符串。 - 注意,这种方式是单向的,指令无法修改父控制器上的原始属性。
- 使用
-
=
:双向绑定- 使用
=
修饰符,指令的作用域属性将与父控制器上对应属性进行双向绑定。这意味着,如果指令改变了这个属性的值,父控制器上的属性也会被更新,反之亦然。 - 例如,如果你有一个父控制器属性
value
,你可以使用=value
在指令的作用域中接收一个双向绑定的值。 - 这种方式允许指令和父控制器共享和修改同一个数据模型。
- 使用
-
&
:函数绑定- 使用
&
修饰符,指令的作用域属性将绑定到父控制器上对应属性的函数。这意味着,指令可以调用父控制器上的函数。 - 例如,如果你有一个父控制器方法
doSomething()
,你可以使用&doSomething
在指令的作用域中接收一个函数引用。 - 在指令内部,你可以调用这个函数,就像调用父控制器上的方法一样。
- 使用
总结:
@
用于接收父控制器属性的字符串表示,单向绑定。=
用于与父控制器属性进行双向绑定。&
用于接收父控制器上的函数,并允许指令调用它。
这些修饰符为你在创建自定义指令时提供了灵活的数据绑定方式。
学习笔记
0 学习笔记