AngularJS数据绑定类型

时间:2016-03-07 22:52:20

标签: angularjs data-binding angularjs-directive

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

  • @文本绑定
  • =双向绑定
  • &方法绑定(尽管有人称之为单向绑定)
  • <单向绑定

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

2 个答案:

答案 0 :(得分:53)

@文字绑定:

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

=双向绑定:

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

&方法绑定

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

<单向绑定:

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

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

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

答案 1 :(得分:8)

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

来自GitHub: 1

  

技艺($编译):

     

向隔离范围定义添加单向绑定   此更改允许开发人员绑定隔离范围/控制器属性   表达式,使用<绑定,以这种方式,如果的值   表达式更改,范围/控制器属性更新但不更新   相反的。

     

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