Validation Backbone.js-验证模型构造函数参数
我想用一个模型做一件简单的事情:Validation Backbone.js-验证模型构造函数参数,validation,backbone.js,parameters,constructor,options,Validation,Backbone.js,Parameters,Constructor,Options,我想用一个模型做一件简单的事情: 如果构造函数参数有效,请使用它们(但不只是分配它们,我必须在之前映射它们,因为它们的格式不同) 在其他情况下,使用默认值 推荐的解决方案是什么 您可以通过在初始化中调用isValid()来实现这一点。如果有效,则按正常方式进行;否则,请清除模型并使用默认值重置它: initialize: function() { console.log("initializing model..."); if (!this.isValid()) {
- 如果构造函数参数有效,请使用它们(但不只是分配它们,我必须在之前映射它们,因为它们的格式不同)
- 在其他情况下,使用默认值
推荐的解决方案是什么 您可以通过在
初始化中调用isValid()
来实现这一点。如果有效,则按正常方式进行;否则,请清除模型并使用默认值重置它:
initialize: function() {
console.log("initializing model...");
if (!this.isValid()) {
console.log("Model is not valid, using defaults");
this.clear({ silent: true });
this.set(this.defaults, { silent: true });
}
console.log("Model is valid");
},
编辑
可以在模型构造函数中使用对象,例如:
var model = new Backbone.Model({
title: "test",
hsa: {
h: 120,
s: "100%",
a: "50%"
}
});
您还可以将其指定为hsa:“120、100%、50%”
或其他类型,并将该值转换为构造函数中的对象
您可以通过在初始化中调用isValid()
来实现这一点。如果有效,则按正常方式进行;否则,请清除模型并使用默认值重置它:
initialize: function() {
console.log("initializing model...");
if (!this.isValid()) {
console.log("Model is not valid, using defaults");
this.clear({ silent: true });
this.set(this.defaults, { silent: true });
}
console.log("Model is valid");
},
编辑
可以在模型构造函数中使用对象,例如:
var model = new Backbone.Model({
title: "test",
hsa: {
h: 120,
s: "100%",
a: "50%"
}
});
您还可以将其指定为hsa:“120、100%、50%”
或其他类型,并将该值转换为构造函数中的对象
太好了!现在我只需要解决定制构造函数的问题。你看,我传递给构造函数的一些属性是十六进制颜色。模型实例包含的不是字符串,而是对象(在HSL颜色空间中)。我已经为这些对象设置了默认值,但参数只是一个字符串。@ciembor这应该没有问题——您可以将对象传递到构造函数中。或者您可以编写一个函数来提取属性并转换它们。。。两种方法都有效。看到我的更新上面。是的,我知道我可以。我只是想正确地完成它,没有松散的函数或抽象方法:)。但谁在乎呢,我会像你说的那样做:D,太好了!现在我只需要解决定制构造函数的问题。你看,我传递给构造函数的一些属性是十六进制颜色。模型实例包含的不是字符串,而是对象(在HSL颜色空间中)。我已经为这些对象设置了默认值,但参数只是一个字符串。@ciembor这应该没有问题——您可以将对象传递到构造函数中。或者您可以编写一个函数来提取属性并转换它们。。。两种方法都有效。看到我的更新上面。是的,我知道我可以。我只是想正确地完成它,没有松散的函数或抽象方法:)。但谁在乎呢,我会像你说的那样:D。