AngularJS数据绑定类型

Luc*_*gue 39 data-binding angularjs angularjs-directive

我知道这是一个陈旧且经过100次回答的问题,但随着最新版本的发布变得越来越复杂,因此引起了很多困惑.我想知道在指令中为属性声明数据绑定的四种当前可用方法之间的区别.特别:

  • @ 文字绑定
  • = 双向绑定
  • & 方法绑定(虽然有些人称之为单向绑定)
  • < 单向绑定

我对最后两个之间的差异特别感兴趣,因为它们似乎具有重叠的功能,我实在无法分辨出一个与另一个的区别和优势.

小智 56

@ 文字装订:

如果我们想要为指令的每个实例提供任何静态文本,则使用此方法.例如,需要传递给用于创建对话的自定义指令的任何标题或特定样式/属性组件.

= 双向绑定:

这是我们正常的角度双向数据绑定.例如,可以使用此实现对话中的任何实时数据更新或任何用户输入(复选框,无线电等).

&方法绑定:

顾名思义,这主要用于从指令调用父控制器中定义的方法.它还可用于计算表达式并将结果绑定到指令范围.典型用法可能是响应用户事件,例如用户关闭对话框时.

< 单向绑定:

我想这是为了更高性能的情况而引入的,我们不需要从指令范围进行任何更新来反映父节点范围.典型的使用场景可能是我们需要通过父作用域中定义的变量传递标题,样式,对话框配置(模态/非模态等).由于这些数据在自定义指令(我们的案例对话框)的范围内大多没有改变,因此单向绑定比双绑定具有更高的性能.这是因为角度观察周期只需要监视父节点范围变量而不是指令单向绑定变量.

注意:我不是AngularJS的专家,上面的答案最适合我的知识.在经验丰富的Angular家伙看来,他们可能是错的.如果有任何错误,请原谅并纠正我.

官方文档: https ://docs.angularjs.org/api/ng/service/$compile#-scope-

  • 我无法在Angular文档中找到它.有没有人有这个链接? (4认同)
  • 我刚刚添加了官方文档的链接,见上文.是的,真的很难找到. (2认同)

geo*_*awg 7

以下是有关隔离范围的新单向绑定的一些信息.

来自GitHub:1

壮举($编译):

向隔离范围定义添加单向绑定此更改允许开发人员使用绑定将隔离范围/控制器属性绑定到表达式,<这样如果表达式的值更改,则范围/控制器属性为更新但不反过来.

绑定是作为一个简单的手表实现的,它也可以提供超过双向绑定的性能优势.