Ember.computed.alias和Ember.binding有什么区别?

时间:2013-03-06 21:06:27

标签: ember.js

在Ember中,使用Ember.computed.alias('otherProperty')将属性定义为另一个属性(或另一个对象的属性)的计算别名似乎与使用propertyNameBinding: 'otherProperty'将其定义为对该属性的绑定具有基本相同的结果

我查看了源代码和文档,但我找不到任何理由为什么一个人会优先于另一个。显然模板使用绑定,这很好,但对于例如控制器,或在视图上引用控制器的属性,是否有区别?

1 个答案:

答案 0 :(得分:14)

可以在extend()上覆盖别名,完全消除与其他键的关系。

一个简短的例子:我有一类与时间相关的函数和类,这些类同时具有unit属性(对于Day,Minute等)和precision属性。通常这些在功能上是相同的。在一两个班级中他们分道扬.. Ember.computed.alias允许precision在大多数情况下为unit添加别名,但可根据需要使用自己的值覆盖。

请注意,create()将使用别名设置器,而不是覆盖。

此外,在路径中设置带有空对象的别名可能会爆炸,而如果路径不在任何地方,则绑定将不会同步。

根据* Binding语法的软弃用

,请参阅以下 morgoth的评论