Ember:在空字符串上将模型设置为undefined

时间:2015-05-21 06:14:59

标签: ember.js ember-model

模板上有一个表单,当按下提交时,它会在控制器中执行操作。当用户键入内容并将其删除时,binded属性将为空字符串而不是undefined。我使用下面的方法来解决这个问题,但它看起来太过于苛刻和不可思议。是否存在将模型属性上的空字符串替换为未定义的内容?试图在模型类中设置它也不起作用,因为我无法获得计算属性来处理它自己。即user: function(){ return undefined if ""}

  

这是我的控制器处理表单提交:

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
}

1 个答案:

答案 0 :(得分:1)

如果值为空字符串,您可以覆盖Ember对象的get以返回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.