我的模型没有为其任何属性提供默认值。我将这个模型绑定到模板上,我想将模型保存在转换上,只有它很脏。但是,只需输入文本字段然后离开文本字段将导致记录变脏,因为它以前是null / undefined,现在它是一个空字符串。我想知道是否有一个简单的解决办法吗?
型号:
App.MyModel = DS.Model.extend({
myProperty: DS.attr('string')
});
路线:
App.MyModelRoute = Ember.Route.extend({
actions: {
willTransition: function(transition) {
var modelIsDirty = this.get('currentModel.isDirty');
if (modelIsDirty) {
console.log('dirty model!');
}
else {
console.log('not dirty');
}
}
}
});
模板:
{{input type="text" value=model.myProperty}}
如果我只是对输入进行聚焦/模糊,这将导致记录变脏。有没有办法将任何字符串属性的默认值设置为''而不是null
或undefined
?我认为这可以解决问题。
我知道defaultValue
属性,但我有15个模型,有些属性各有40多个属性。我想避免为每个字符串设置defaultValue
。
答案 0 :(得分:1)
因此,如果我理解正确,您的服务器返回null或未定义模型中应该是字符串的某些属性?我有一些类似的问题,我有时希望该属性为null而不是空字符串。我没有修改模型类,而是通过向Ember文本字段类添加一个观察者来解决这个问题:
Ember.TextField.reopen({
nullable: false,
nullableObserver: function() {
if (this.get('nullable') && this.get('value') === '') {
this.set('value', null);
}
}.observes('value')
});
使用上面的代码,我可以通过将其nullable属性设置为true来使文本字段为空:
{{input type="text" value=someValue nullable=true}}
或者你可以在上面的代码中省略nullable属性,默认情况下为所有输入字段设置为null。