Javascript 在backbone.js中,当我通过传递{validate:true}使用unset()时,是否可以强制验证?
当我通过传递{validate:true}使用unset()时,是否可以强制验证Javascript 在backbone.js中,当我通过传递{validate:true}使用unset()时,是否可以强制验证?,javascript,backbone.js,Javascript,Backbone.js,当我通过传递{validate:true}使用unset()时,是否可以强制验证 var Person = new Backbone.Model({ name: 'byer' }); Person.validate = function(attrs) { if (!attrs.name) { return 'I need your name'; } }; Person.set({ name: 'byer' }); console.dir(Person.attribute
var Person = new Backbone.Model({ name: 'byer' });
Person.validate = function(attrs) {
if (!attrs.name) {
return 'I need your name';
}
};
Person.set({ name: 'byer' });
console.dir(Person.attributes);
Person.unset('name');
console.dir(Person.attributes);
Person.unset('name', { validate: true });
console.dir(Person.attributes);
Person.unset('name', { validate: false });
console.dir(Person.attributes);
通过传递{validate:ture}和{validate:false}有什么区别
如果我不传递任何选项,验证将为false
如果我不传递任何选项,验证将为false
对。默认情况下,主干不会执行验证
以下是取消设置的代码:
unset: function(attr, options) {
return this.set(attr, void 0, _.extend({}, options, {unset: true}));
},
所以它只是用一个额外的标志unset
来设置。现在,基于此unset
标志执行set/unset的代码位于执行验证的代码之后。如果传递了验证标志({validate:true}
),并且验证失败,则不会执行该操作,否则将执行该操作
传递{validate:false}
和不传递validate标志具有相同的效果-操作将在不进行任何验证的情况下执行