如何为 Ember 数据中的所有数据类型设置默认值?
How do I set default values for all data types in Ember Data?
我的模型没有为其任何属性提供默认值。我将此模型绑定到模板,并且我想在转换时保存模型 仅当它变脏时 。但是,简单地输入文本字段然后离开文本字段会导致记录变脏,因为它以前是 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}}
如果我简单地focus/blur输入,这会导致记录变脏。有没有办法将任何字符串 属性 的默认值设置为 '' 而不是 null
或 undefined
?我认为这可能会解决问题。
我知道 defaultValue
属性,但我有 15 个模型,有些模型每个都有 40 多个属性。我想避免为每个字符串设置 defaultValue
。
所以如果我理解正确的话,你的服务器正在为你的模型中的某些属性返回 null 或 undefined ,这些属性应该是字符串?我有一些类似的问题,有时我希望 属性 为 null 而不是空字符串。我没有修改模型 class,而是通过向 Ember 文本字段 class:
添加一个观察者来解决这个问题
Ember.TextField.reopen({
nullable: false,
nullableObserver: function() {
if (this.get('nullable') && this.get('value') === '') {
this.set('value', null);
}
}.observes('value')
});
使用上面的代码,我可以通过将其可为空的 属性 设置为 true 来使文本字段可为空:
{{input type="text" value=someValue nullable=true}}
或者您可以在上面的代码中省略可空的 属性,并将所有输入字段默认设置为空。
我的模型没有为其任何属性提供默认值。我将此模型绑定到模板,并且我想在转换时保存模型 仅当它变脏时 。但是,简单地输入文本字段然后离开文本字段会导致记录变脏,因为它以前是 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}}
如果我简单地focus/blur输入,这会导致记录变脏。有没有办法将任何字符串 属性 的默认值设置为 '' 而不是 null
或 undefined
?我认为这可能会解决问题。
我知道 defaultValue
属性,但我有 15 个模型,有些模型每个都有 40 多个属性。我想避免为每个字符串设置 defaultValue
。
所以如果我理解正确的话,你的服务器正在为你的模型中的某些属性返回 null 或 undefined ,这些属性应该是字符串?我有一些类似的问题,有时我希望 属性 为 null 而不是空字符串。我没有修改模型 class,而是通过向 Ember 文本字段 class:
添加一个观察者来解决这个问题Ember.TextField.reopen({
nullable: false,
nullableObserver: function() {
if (this.get('nullable') && this.get('value') === '') {
this.set('value', null);
}
}.observes('value')
});
使用上面的代码,我可以通过将其可为空的 属性 设置为 true 来使文本字段可为空:
{{input type="text" value=someValue nullable=true}}
或者您可以在上面的代码中省略可空的 属性,并将所有输入字段默认设置为空。