Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在backbone.js中,当我通过传递{validate:true}使用unset()时,是否可以强制验证?_Javascript_Backbone.js - Fatal编程技术网

Javascript 在backbone.js中,当我通过传递{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

当我通过传递{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.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标志具有相同的效果-操作将在不进行任何验证的情况下执行