Backbone.js - Modelos (Validaciones)

Hola Nuevas Criaturas,

Ahora presento como validar datos en nuestros modelos.

En los modelos de Backbone, existe un método llamado validate. Ahí podemos incluir la validación de los campos que queremos.

Volviendo al post anterior mencionaba de la estructura de nuestros registros. Recordando que son nombre, partido y votos. Necesitamos validar al menos el nombre y partido político al que pertenece.

La forma de declarar la validación en nuestro modelo, queda de la siguiente forma:

var Candidato = Backbone.Model.extend({
	validate: function (attrs, options){
    	// Aquí las validaciones
    }
});

Observemos que validate acepta dos parámetros. El parametro attrs contiene los campos que agregamos y por el momento es el que nos interesa. Si validamos que el usuario deba escribir el nombre del candidato entonces comprobamos que el valor no este vacío.
Para este ejemplo usaré la funcion isEmpty de underscore.js puesto que ya viene cargada como dependencia.

var Candidato = Backbone.Model.extend({
	validate: function (attrs, options){
		if( _.isEmpty(attrs.nombre) )
        	return 'El nombre no puede estar vacío';
    }
});

Ya que definimos el modelo Candidato, ahora agregamos un nuevo registro.

var candidato = new Candidato({ nombre: '', partido: 'PRI' });

Validación manual de un nuevo registro.

Backbone cuenta con isValid y validationError. Comprobamos si el registro se ha creado. Lo haremos con isValid.

candidato.isValid(); // Será 'false'

Y para saber la causa del error para eso tenemos el texto que pusimos en la funcion validate, sí, la cadena de texto que devuelve el return.

candidato.validationError; // Devuelve *El nombre no puede estar vacío*

Backbone también cuenta con validación en eventos, pero eso será en otro post.

Bendiciones!