我正在关注这些https://tutsplus.com/course/connected-to-the-backbone/学习 Backbone 的讲座,我了解到只要我们设置模型内任何变量的值,就会调用 validate()
函数(如果存在)。我写了这个模型:
var PersonModel = Backbone.Model.extend({
defaults: {
name: 'Kamran Ahmed',
rollNo: '1224',
email: 'kamranahmed.se@gmail.com'
},
validate: function (attrs){
if ( !attrs.name ) {
return 'You must provide a name';
}
if ( attrs.rollNo < 0) {
return 'Roll Number must be positive';
}
}
});
我正在尝试以下操作:
var person = new PersonModel();
person.set('rollNo', -100) // trying to violate the validation rule
但它从未验证,即值-100
仍被分配给rollNo
。另外,当我执行 person.set('rollNo', -100)
时,它会不断返回整个对象,而由于违反了验证规则,它应该返回 false。我在这里做错了什么?为什么没有执行验证?
最佳答案
来自文档:
By default validate is called before save, but can also be called before set if
{validate:true} is passed.
所以你需要像这样使用它:
person.set({'rollNo':-100},{validate:true})
您可以阅读validate对于Backbone.Model
。
作为旁注: 该教程似乎适用于 Backbone 0.9.2,而当前版本是 1.1.0。考虑查找最新的教程,或阅读 Change Log .
关于javascript - Backbone 模型验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20464502/