via tutorial site page into injection how executed cross attack javascript backbone.js

javascript - tutorial - Backbone Validate no funciona



javascript injection tutorial (4)

En Backbone.js (anterior a la versión 0.9.10 ), validate se llama antes de save y antes de set .

Obtendrá un error de alerta cuando establezca un valor no válido .

Ejemplo: el valor de age está por debajo de 18 :

var man = new Man ({name : ''qian'', age : 12}); man.set({ age: 12 }); // that will trigger alert

EDITAR

Para la versión 0.9.10+ Backbone.js, se 0.9.10+ un problema: la validación fallida no desencadena la devolución de llamada por error . La explicación del problema dice que

evento invalid debe ser utilizado en lugar de error

Cambiando así tu código a:

var Man = Backbone.Model.extend({ initialize : function(){ this.on("invalid",function(model,error){ alert(error); }); }, ...

Y establecer variable con la opción de validate establecida en true activará una alert .

man.set({age: 12}, {validate : true});

Estoy usando la función de validate de Backbone para garantizar que Man tenga una propiedad de más de 18 años. Aquí está mi código:

var Man = Backbone.Model.extend({ initialize : function(){ this.on("error",function(model,error){ alert(error); }); }, validate : function(attrs,options){ if (attrs.age < 18){ return ''below 18''; } } }) var man = new Man({name : ''qian'', age : 12});

Pero mirando el resultado parece que validate no funciona.


Para la red troncal v.1.0.0

var Man = Backbone.Model.extend({ initialize : function(){ this.on("invalid",function(model,error){ alert(error); }); }, validate : function(attrs, options){ if (attrs.age < 18){ return ''below 18''; } } });

Ejemplo 1. Sin {validate: true}

//Object will be created with invalid attribute ''age'' var man = new Man({name : ''qian'', age : 12}); console.log(man) // Returns an object with invalid attributes // But we''ll use only valid objects. // Also we''ll get the error message in alert, if validation fails. if(man.isValid()){ alert( man.get(''name'') ); } var man = new Man({name : ''qian'', age : 19}); if(man.isValid()){ alert( man.get(''name'') ); }

Ejemplo 2. Con {validate: true}

//Object will be created without any passed attributes var man = new Man({name : ''qian'', age : 12}, {validate:true}); console.log(man) //Object will be without passed attributes /* man.isValid() returns ''true'' throw we passed invalid attrs. We won''t see any error alert message, because Backbone created empty object */ /* Doesn''t work */ if(man.isValid()){ alert( man.get(''name'') ); //undefined } /* Works */ // Created model had invalid attrs, so validationError won''t be empty. // If all attrs are valid, validationError will be empty if(!man.validationError){ alert( man.get(''name'') ); }


Si está utilizando una nueva versión (> 1.0) de Backbone y desea model.set la validación en el momento del método model.set ,

entonces debe tener que pasar {validate: true} para activar la validación.

utilizar

model.set({field:value},{validate: true})

O

model.set("field","value",{validate: true})

en lugar de

model.set({field:value})

REF: registro de cambio de red troncal