Backbone 0.9.9验证模型创建新模型

时间:2012-12-17 19:51:26

标签: javascript backbone.js

在更新到新的Backbone版本0.9.9之后,存在一个问题,即当我想创建一个新模型时,它总是进入验证功能。例如。我在默认值和“标题”中设置“标题”:“”并在验证中我想检查是否有长度。 如果在启动时运行验证功能,则总会出现错误。

我该怎么办?

1 个答案:

答案 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新值时验证。