我有一个主干模型和集合。在模型中,定义了默认属性值:

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/

10-12 13:02