在用 set,或者 save 方法,去设置属性的值,还有把模型保存到数据库之前,都可以先去验证一下属性的值,验证通过以后,才能去执行这些动作,不然的话,就会返回一个 false ,还有一条事先设置好的错误信息。
这个验证的功能,是通过模型的 validate 方法来做的。
下面,我们去给 Note 这个模型里的 title 属性,去添加一个验证 .. 要求设置的标题属性字符数必须要大于 3。
在 Note 模型里面,去添加一个 validate 这个方法 ... 这接受两个参数 ... 一个是对象的属性,还有一个是选项参数 ... 属性可以用 attributes 来表示 ... 选项可以使用 options ...
然后在这个方法里,用 if 语句,去判断一下 ... 判断的条件是对象的 title 属性这个字符串的长度不能小于 3 ...
attributes.title 可以得到 title 这个属性 ... 后面再加上一个点 length ,可以得到这个字符串的长度 ... 小于 3 。意思就是,如果对象的标题属性的字符串长度小于3,这会验证失败 ...
validate: function(attributes, options) {
if (attributes.title.length < 3) {
return '笔记的标题字符数要大于 3';
}
}
下面,我们去试一下 ... 打开浏览器 ... 先新建一个 note 对象 ... 然后再用 set 方法,去设置一下 note 对象的 title 属性 ... 把属性的值设置一个长度小于 3 的值 ... hi ... 然后再给这个方法传递一个选项参数 ... 在这里,把 validate 这个属性设置成 true ... 表示要使用验证的功能 ...
var note = new Note
note.set('title', 'hi', {validate:true})
回车 ... 在控制台上,会返回一个 false .. 表示验证没有通过,因为给 title 属性设置的值的长度小于 3 ...
再去查看一下这个 note 对象 ... 打开它的 attributes 属性 ... 这里它的 title 属性的值仍然是默认的值 ...
注意在这个对象里面,validationError 这个属性里面,会包含验证失败以后的这条错误的信息。
下面,我们可以重新再去给 title 设置一下值 ... 设置成 hello ...
这回验证就会通过了 ... 因为 hello 的长度大于 3 ... 打开这个返回来的对象 ... attributes .. 在这里, title 的值,已经设置成了 hello ...