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。