为Ember对象属性定义setter

时间:2014-05-16 13:27:08

标签: object ember.js properties set

我有一个带有属性Foo的Ember.Object message

Foo = Ember.Object.extend({
    message: null

执行this.set('message', value)时,我想在value上设置message之前修改.observes变量。

我可以使用Foo = Ember.Object.extend({ message: null, messageSetter: function() { this.set('message', this.get('message') + 'suffix') }.observes('message')

执行此操作
computed property

或者我可以使用getter甚至处理Foo = Ember.Object.extend({ messageValue: null, message: function(key, value) { if(arguments.length > 1) { this.set('messageValue', value + 'suffix'); } return this.get('messageValue'); }.property('message') 然后:

{{1}}

但两者看起来有点混乱,是否有一种更清晰的方法来修改值,然后才能在属性上设置?

1 个答案:

答案 0 :(得分:0)

你帖子中的第二个例子是你想要做的,但你有一个类型-o。您应该与messageValue中的}.property('messageValue'}绑定。

但是,如果您不关心message的原始输入值,您可以使用计算属性获得一些乐趣。 CP返回的值将成为该CP的值。因此,您可以将其简化为:

http://emberjs.jsbin.com/jimuvaji/1/edit

但实际上你应该使用你的例子#2。