2012-09-05 94 views
3

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

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

defaults: { 
    "status": "x" 
} 

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

这本来是很容易的Backbone.js的作者在“清除”方法来检查,如果模型具有“默认值”,如果是这样,删除所有值,然后获得默认。

非常感谢提前
沃尔夫冈

回答

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的混帐issues

希望这会有所帮助!

5

也有类似的需求。因为框架的作者本身并不使用它们,所以它们无法预见所有真实世界的用例。无论如何不如直接问https://github.com/documentcloud/backbone

,它的JavaScript

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

我宁愿这些明确的覆盖()方法,只是为了保持默认行为,因为他们并没有混淆的任何其他开发人员在同一项目上工作。 –