如果我有一系列依赖于相同属性的属性,那么定义它们的最佳(可维护、最快等)方法是什么?我能想到几个:
A. 每个属性:
isDraft: (->
@get('status') is App.Status.DRAFT
).property('status')
isPublished: (->
@get('status') is App.Status.PUBLISHED
).property('status')
isArchived: (->
@get('status') is App.Status.ARCHIVED
).property('status')
B. 一次性设置所有道具的观察者:
isDraft: true
isPublished: false
isArchived: false
statusDidChange: (->
@setProperties(
isDraft: @get('status') is App.Status.DRAFT
isPublished: @get('status') is App.Status.PUBLISHED
isArchived: @get('status') is App.Status.ARCHIVED
)
).observes('status')
C. 直接计算道具:
isDraft: Ember.computed.equal('status', App.Status.DRAFT)
isPublished: Ember.computed.equal('status', App.Status.PUBLISHED)
isArchived: Ember.computed.equal('status', App.Status.ARCHIVED)
(C) 绝对看起来是最优雅的,但我想知道:使用三个计算属性与一个观察者相比有什么惩罚吗?(C) 基本上是 A 的简写吗?有什么区别吗?