【问题标题】:Defining setter for Ember Object property为 Ember 对象属性定义 setter
【发布时间】:2014-07-04 23:11:12
【问题描述】:

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

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

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

我可以通过.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')

但是两者看起来都有些凌乱,有没有更简洁的方法在属性设置之前修改值?

【问题讨论】:

  • 我不知道,这就是计算属性的用途。

标签: object ember.js properties set


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-31
    • 1970-01-01
    • 2015-09-20
    • 2012-09-08
    • 1970-01-01
    • 2012-09-09
    • 2011-10-17
    • 2014-08-08
    相关资源
    最近更新 更多