Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 主干0.9.9在创建新模型时验证模型_Javascript_Backbone.js - Fatal编程技术网

Javascript 主干0.9.9在创建新模型时验证模型

Javascript 主干0.9.9在创建新模型时验证模型,javascript,backbone.js,Javascript,Backbone.js,在更新到新的主干网版本0.9.9之后,出现了一个问题,即当我想要创建一个新模型时,它总是进入validate函数。例如,我在默认设置中设置了“title”和“title”:“”,并在验证中检查是否有长度。 如果启动时运行了验证功能,则始终会出现错误 我能做什么?您可以在验证方法中允许空标题,或者您总是用值实例化模型,例如:新模型({title:'my title'}) 在更糟糕的情况下,您可以通过以下示例检查是否提取了模型: validate: function( attrs ) { if(

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


我能做什么?

您可以在验证方法中允许空标题,或者您总是用值实例化模型,例如:
新模型({title:'my title'})

在更糟糕的情况下,您可以通过以下示例检查是否提取了模型:

validate: function( attrs ) {
  if( this.fetched ) {
    if( !attrs.title.length ) { return "error!"; }
  }
}
然后,在获得所有信息并正确构建模型后,您只需将this.fetched设置为true

但事实是,您的
默认值
从一开始就应该是有效的格式

在评论中讨论后编辑
您可能还可以从
Backbone.model
中检查
hasChanged
函数是否允许验证。例如:

validate: function( attrs ) {
  if( this.hasChanged() ) {
    if( !attrs.title.length ) { return "error!"; }
  }
}

这样,您将跳过初始化时的验证,然后,它将仅在您
设置
新值时进行验证。

您可以在验证方法中允许空标题,或者您总是使用值实例化您的模型,例如:
新模型({title:'my title')

在更糟糕的情况下,您可以通过以下示例检查是否提取了模型:

validate: function( attrs ) {
  if( this.fetched ) {
    if( !attrs.title.length ) { return "error!"; }
  }
}
然后,在获得所有信息并正确构建模型后,您只需将this.fetched设置为true

但事实是,您的
默认值
从一开始就应该是有效的格式

在评论中讨论后编辑
您可能还可以从
Backbone.model
中检查
hasChanged
函数是否允许验证。例如:

validate: function( attrs ) {
  if( this.hasChanged() ) {
    if( !attrs.title.length ) { return "error!"; }
  }
}

这样,您将跳过初始化时的验证,然后,它将仅在您设置新值时进行验证。

但是如果默认值在默认情况下有效,那么如何验证必填字段?不需要在模型中进行所有验证。例如,我不会用model
validate
方法验证表单;在我看来,这种类型的验证是可行的。一方面,有这种方法。另一方面,出于可重用性、一致性等考虑,验证规则似乎属于域对象。我觉得主干网让“做正确的事情”变得非常困难。然后是Backbone.Validation,它是建立在您在模型上定义规则的前提下的(尽管配置不同)。是的,我理解您的观点。不过,我发现总是验证要放入模型中的数据更符合逻辑。也许你可以在验证函数中使用
changedAttributes
hasChanged
来允许无效的默认值。我本来打算在github上就此提出一个问题,但他们似乎已经“关闭了这本书”,这似乎是:-真的很遗憾。但是如果默认值在默认情况下是有效的,如何验证必填字段?不需要在模型中进行所有验证。例如,我不会用model
validate
方法验证表单;在我看来,这种类型的验证是可行的。一方面,有这种方法。另一方面,出于可重用性、一致性等考虑,验证规则似乎属于域对象。我觉得主干网让“做正确的事情”变得非常困难。然后是Backbone.Validation,它是建立在您在模型上定义规则的前提下的(尽管配置不同)。是的,我理解您的观点。不过,我发现总是验证要放入模型中的数据更符合逻辑。也许你可以在验证函数中使用
changedAttributes
hasChanged
来允许无效的默认值。我本来打算在github上就此提出一个问题,但他们似乎已经“结束了这本书”,似乎:-真的很遗憾。有相同的经验..有相同的经验。。