更新到新的 Backbone 版本 0.9.9 后,当我想创建一个新模型时,它总是进入验证功能。例如,我在默认值和“标题”:“”中设置“标题”,并且在验证中我想检查是否有长度。如果在启动时运行验证功能,那么总是会出现错误。
我能做什么?
更新到新的 Backbone 版本 0.9.9 后,当我想创建一个新模型时,它总是进入验证功能。例如,我在默认值和“标题”:“”中设置“标题”,并且在验证中我想检查是否有长度。如果在启动时运行验证功能,那么总是会出现错误。
我能做什么?
你可以在你的验证方法中允许空标题,或者你总是用值实例化你的模型,例如:new Model({ title: 'my title' })
在更糟糕的情况下,您可以检查模型是否被获取,例如:
validate: function( attrs ) {
if( this.fetched ) {
if( !attrs.title.length ) { return "error!"; }
}
}
this.fetched
然后,当您获得所有信息并正确构建模型时,您只需设置为 true。
但事实是,您的defaults
值应该从一开始就采用有效格式。
在评论中讨论后编辑
您可能还可以检查该hasChanged
功能Backbone.model
是否允许验证。例如:
validate: function( attrs ) {
if( this.hasChanged() ) {
if( !attrs.title.length ) { return "error!"; }
}
}
这样,您将跳过初始化验证,然后,它只会在您使用set
新值时进行验证。