0
App.Person = Ember.Object.extend({
  firstName: "Trek",
});

App.person = App.Person.create({
  firstName: undefined
})

console.log(App.person.get('firstName')); 

此代码将输出undefined,但我想以某种方式拦截属性设置,如果它设置为undefined ,则保持默认值“ Trek ”不变。

ember-1.0.0

4

2 回答 2

1

使用计算属性和默认值

App.Person = Ember.Object.extend({
    firstNameDefault:'Trek',
    firstName:function(key,value){
        if(arguments.length > 1 && typeof value !== 'undefined'){
            return value
        }
        return this.get('firstNameDefault');
    }.property('firstNameDefault')
});

App.person = App.Person.create({
  firstName: undefined
})

console.log(App.person.get('firstName')); 
于 2013-10-22T14:50:55.873 回答
1

您可以使用计算属性:

App.Person = Ember.Object.extend({
  _firstName: 'Trek',
  firstName: function(key, value) {
    if (arguments.length > 1 && typeof value !== 'undefined') {
      this.set('_firstName', value);
    }

    return this.get('_firstName');
  }.property('_firstName')
});

App.person = App.Person.create({
  firstName: undefined
})

console.log(App.person.get('firstName')); 
于 2013-10-22T14:37:54.840 回答