在更新到新的Backbone版本0.9.9之后,存在一个问题,即当我想创建一个新模型时,它总是进入验证功能。例如。我在默认值和“标题”中设置“标题”:“”并在验证中我想检查是否有长度。 如果在启动时运行验证功能,则总会出现错误。
我该怎么办?
答案 0 :(得分:1)
您可以在验证方法中允许空标题,或者始终使用值来实例化模型,例如: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
新值时验证。