Ember:在空字符串上将模型设置为未定义

Ember: Setting model to undefined on empty strings

模板上有一个表单,当按下提交时,它会触发控制器中的一个动作。当用户键入内容并将其删除时,绑定的 属性 将是一个空字符串,而不是未定义的。我用下面的方法解决了这个问题,但它看起来太老套了,而且无法表达。有什么东西可以将模型属性上的空字符串替换为未定义的吗?尝试在模型 class 中设置它也不起作用,因为我无法让计算属性在其自身上工作。即 user: function(){ return undefined if ""}

Here is my controller which handles the form submit:

Controller:
  actions:{
    save: function(){
      if(this.get('user.name')===""){
        this.set('user.name',undefined);
      }
      if(this.get('user.phone')===""){
        this.set('user.phone',undefined);
      }
      if(this.get('user.email')===""){
        this.set('user.email',undefined);
      }
  }
  // Process data
}

如果值为空字符串,您可以将 Ember 对象的 get 覆盖为 return undefined。

var Model = Em.Object.extend({
  get: function(path) {
    var value = this._super(path);
    return value || undefined;
  }
});

var model = Model.create({
  name: 'Blessan',
  address: ''
});

alert(model.get('name'));
alert(model.get('address'));

Here is a working demo.