2016-11-09 59 views
1

我想用Backbone.validation创建我自己的验证器。如何添加自己的验证器与Backbone.validation?

我已经试过这样:

_.extend(Backbone.Validation.validators, { 
    myValidator: function(value, attr, customValue, model) { 
     if(value !== customValue){ 
      return 'error'; 
     } 
    }, 
}); 

而且在我的架构:

profiles: { 
    editorClass: "form-inline test", 
    title: "Skills", 
    type: 'List', 
    itemType: 'NestedModel', 
    model: UserProfile, 
    render: "buttonsstars", 
    validators: ['myValidator'], 
}, 

但是,我不能得到任何东西。

+0

你真的在使用[backbone.validation](https://github.com/thedersen/backbone.validation)或[backbone-forms](https://github.com/powmedia/backbone-forms)吗? –

+0

抱歉,但你是什么意思? –

+0

您正在扩展来自[Backbone.validation](https://github.com/thedersen/backbone.validation)的'Backbone.Validation.validators',但是您正试图在'validators'属性中使用它一个与Backbone.validation无关的模式,看起来像来自[Backbone-forms](https://github.com/powmedia/backbone-forms)lib。这就是为什么我问你是否混淆了这两者。 –

回答

1

backbone.validation的文档中,要添加自定义验证程序,首先需要扩展Backbone.Validation.validators(在模型中使用它之前)。

_.extend(Backbone.Validation.validators, { 
    myValidator: function(value, attr, customValue, model) { 
    if(value !== customValue){ 
     return 'error'; 
    } 
    }, 
}); 

然后使用它是这样的:

var Model = Backbone.Model.extend({ 
    validation: { 
    age: { 
     myValidator: 1 // uses your custom validator 
    } 
    } 
}); 

如果自定义验证器是特定于模型,而且在整个验证架构共享:

var SomeModel = Backbone.Model.extend({ 
    validation: { 
    name: 'validateName' 
    }, 
    validateName: function(value, attr, computedState) {/*...snip...*/} 
}); 

如果验证是定制的该模式的具体领域:

var SomeModel = Backbone.Model.extend({ 
    validation: { 
    name: { 
     fn: function(value, attr, computedState) {/*...snip...*/} 
    } 
    } 
}); 
+0

我试过这个例子,但它不工作... –