2013-07-29 182 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); 
    });