0

模板上有一个表单,当按下提交时,它会在控制器中触发一个动作。当用户键入内容并将其删除时,绑定的属性将是一个空字符串,而不是未定义的。我用下面的方法来解决这个问题,但它看起来太老套和不美观。有什么东西可以将模型属性上的空字符串替换为未定义的吗?尝试在模型类中设置它也不起作用,因为我无法让计算属性对其自身起作用。IEuser: 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
}
4

1 回答 1

1

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

这是一个工作演示。

于 2015-05-21T07:25:41.240 回答