backbone.js model.clear没有默认值

时间:2012-09-05 13:01:09

标签: backbone.js

当我创建一个新的backbone.js模型时,“defaults”中的属性不会被忽略,它们将成为我模型的初始值。
当我在模型上称之为“清除”时,为什么忽略它们 背后有什么理由吗? 为什么我需要一个状态,当我有“默认值”时,我的模型的所有属性都是0或“”(空格)?
有人可以给我一个真实世界的例子吗?

例如,在我的一个模型中,有一个名为“status”的属性。初始值为“x”,但用户可将其更改为“b”或“u”。 “”(空格)无效值。因此,在模型中,我有

 defaults: {
   "status":  "x"
 }

在详细信息组件中,用户可以编辑模型的值,他有一个名为“erase”的按钮。当他这样做时,模型得到初始状态。在这种情况下,我永远不需要一个函数来将所有属性设置为零或空格。

如果模型具有“默认值”,则backbone.js作者可以很容易地检查“clear”方法,如果是,则删除所有值,然后获取默认值。

提前致谢了 沃尔夫冈

2 个答案:

答案 0 :(得分:5)

有类似的需求。因为框架的作者不会自己使用它们,所以他们无法预见所有现实世界的用例。最好直接问https://github.com/documentcloud/backbone

无论如何,这是javascript

Backbone.Model.prototype.resetToDefaults = function() {
    this.clear();
    this.set(this.defaults);
};

答案 1 :(得分:2)

如果您不喜欢覆盖它

var Model = Backbone.Model.extend({
  clear: function(options) {
    Backbone.Model.prototype.clear.apply(this, arguments); // or something like this
    return this.set(_.clone(this.defaults));
  }
});

现在您可以使用自定义模型作为所有模型的基础

var MyModel = Model.extend({...});

如果这样做很快就会让你烦恼,你可以将它发布到backbone.js'git issues

希望这有帮助!