I upgraded my backbone relational library to 0.10.0 I have problems with validating the model, the validationError attribute is undefined in callback method.This attribute has an object in previous version.
If I changed code in the library file it works but I want to ask if there is a better way or is there a patch for this thanks in advance.
I have a model with validate method:
define( [
'jquery',
'underscore',
'backbone',
'backbonerelational'
], function ( $, _, Backbone, Backbonerelational ) {
'use strict';
var MyModelR = Backbone.RelationalModel.extend( {
idAttribute: "itemId",
defaults: {
_hasServerSideError: false
},
validate: function ( attrs, options ) {
var error;
if ( !attrs.name ) {
error = {
name: 'name',
message: 'Please enter a name.'
};
}
return error ? error : false;
},
url: function () {
return "/myurl";
},
sync: function ( method, model, options ) {
if ( options.action ) {
options.emulateHTTP = true;
options.validate = true;
options.wait = true;
options.url = "/myurl" + options.action;
} else if ( method.toLowerCase() === "update" ) { //default action
options = options || {};
options.url = "/myurl";
}
Backbone.sync( method, model, options );
},
parse: function ( response, options ) {
//code here
}
} );
return MyModelR;
} );
I have a view that listen for the invalid event
myView = Backbone.View.extend( {
initialize: function ( options ) {
this.listenTo( this.MyModelR , 'invalid', this.invalidHandler );
...code
},
invalidHandler: function ( model, error, options ) {
if ( options.validationError ) { //validationError has undefined value
showError(...)
}
});
If I tweak the backbone-relational.js library file at line 1899, it works, I want to ask if there is a better way to solve this or it is a valid defect ?
if ( model && model.validationError ) {
options.validationError = model.validationError;//Added this line
this.trigger( 'invalid', this, attrs, options );
model = false;
}