在 Angular 1.5 中使用“单向绑定”(<) 有啥意义?

Posted

技术标签:

【中文标题】在 Angular 1.5 中使用“单向绑定”(<) 有啥意义?【英文标题】:What's the point of having 'one-directional binding' (<) in Angular 1.5?在 Angular 1.5 中使用“单向绑定”(<) 有什么意义? 【发布时间】:2016-05-24 12:57:10 【问题描述】:

随着在 Angular 1.5 中引入组件概念,还引入了单向数据绑定 (

但是请注意,父范围和组件范围都引用同一个对象,因此如果您要更改组件中的对象属性或数组元素,父范围仍会反映该更改。因此,一般规则应该是永远不要更改组件范围内的对象或数组属性。

确实,在指令/组件范围内更改对象的属性会反映在父范围内 - 听起来不像是单向绑定,它只会给整个事情增加混乱 - 我们现在有半单向绑定,最好不要用于对象或数组,而对于字符串,我们有 @.

什么是使用单向数据绑定的有用真实案例?或者为了保护自己免受意外变化的影响而完全避免它是一个好主意 - 因为单向概念尖叫着它是单向的,而事实并非如此?

【问题讨论】:

我也有同样的疑问。你有答案吗?? 【参考方案1】:

如果是@,您应该使用插值(value 表达式)将一些值传递给指令:

<my-directive some-value="value"></my-directive>

scope 
  someValue: "@"

&lt; 绑定的情况下,您设置属性值而不进行插值。而当value 的值不是undefined 时,它将被隔离范围限制:

<my-directive some-value="value"></my-directive>

scope 
  someValue: "<"

当然,someValue 必须是基元,而不是数组或对象

【讨论】:

我理解 @ 和 true,&lt;= 之间的区别仅在于原始值绑定。 啊。无用且令人困惑,然后:(期待真正的单向绑定。但这可能是人性 - 双向绑定真是太棒了,现在我抱怨要单向绑定。:)

以上是关于在 Angular 1.5 中使用“单向绑定”(<) 有啥意义?的主要内容,如果未能解决你的问题,请参考以下文章

单和双向绑定使用场景

Angular Component:如何为父级中定义的输出绑定函数指定值?

Vue.js实现双向绑定的原理

再谈angularJS数据绑定机制及背后原理—angularJS常见问题总结

再谈angularJS数据绑定机制及背后原理—angularJS常见问题总结

如何在淘汰赛中使用单向绑定