2016-11-09 26 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

我試過這個例子,但它不工作... –

相關問題