3

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

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

 defaults: {
   "status":  "x"
 }

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

如果模型具有“默认值”,那么对于主干.js 作者来说,检查“clear”方法会很容易,如果有,则删除所有值,然后获取默认值。

非常感谢
沃尔夫冈

4

2 回答 2

5

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

无论如何,它是javascript

Backbone.Model.prototype.resetToDefaults = function() {
    this.clear();
    this.set(this.defaults);
};
于 2012-09-05T13:37:22.133 回答
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

希望这可以帮助!

于 2012-09-05T13:39:55.703 回答