2013-07-29 122 views
3

我使用的是Backbone.Validation插件。我有一個模型來完成服務器端完成的唯一性檢查。我如何獲得backbone.validation來識別錯誤並運行我設置的回調來顯示返回的錯誤消息?backbone.validation插件和服務器端驗證

this.model.save() 
    .done(function(model) { 
    App.currentRouter.navigate('#/', {trigger: true}); 
    }) 
    .fail(function(response) { 
    alert('errors: ' + JSON.stringify(response)); 
    // ? have backbone.validation handle errors ? 
    }); 

在此先感謝!

回答

4

所以不知道這是否是最好的方法來做到這一點,但我發現了一個可行的解決方案。

this.model.save() 
    .done(function(model, response, options) { 
     App.protocols.add(model); 
     App.currentRouter.navigate('#/', {trigger: true}); 
    }) 
    .fail(function(response, xhr, options) { 
     var errors = JSON.parse(response.responseText)['errors']; 

     _.each(errors, function(val, attr){ 
     Backbone.Validation.callbacks.invalid(self, attr, val, 'name'); 
     }); 

     self.model.trigger('validated', false, self.model, errors); 
     self.model.trigger('validated:invalid', self.model, errors); 
    });