模板上有一个表单,当按下提交时,它会在控制器中执行操作。当用户键入内容并将其删除时,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
}
答案 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. 强>