我有一个主干模型和集合。在模型中,定义了默认属性值:
var Person = Backbone.Model.extend({
defaults: {
name: "mark",
middle: "-"
}
});
var People = Backbone.Collection.extend({
model: Person
});
var collection = new People();
collection.add({name: "paul", middle: null});
console.log('collection is ');
console.log(collection);
如果为属性“middle”传入“null”,我希望采用“middle”的默认值,即“-”。但是,“null”会覆盖默认值。我该怎么做呢? jsfiddle 是 here
最佳答案
最干净的方法可能是添加一个 parse
方法并规范化数据:
var Person = Backbone.Model.extend({
defaults: {
name: 'mark',
middle: '-'
},
parse: function (payload) {
return {
name: payload.name || undefined,
middle: payload.middle || undefined
};
}
});
collection.add({name: "paul", middle: null}, {parse: true});
请注意,当数据通过
fetch
从服务器返回时,它将自动通过 parse
并且不需要调用 pass 选项标志。您可以在模型级别或集合级别执行此操作。
关于javascript - 如果属性值为 null,则使用 Backbone 模型默认值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27397527/