1

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

我能做什么?

4

1 回答 1

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新值时进行验证。

于 2012-12-17T20:06:12.007 回答