当首次创建新模型时,有没有一种方法可以在Backbone.js中抑制模型验证?阻止Backbone.js模型从第一次添加到集合时进行验证
在我的应用程序中,我有一个任意数量的模型的集合,它们被表示为列表项。用户可以点击每个项目上的按钮,在当前项目下插入一个新的空项目。显然,空项目验证失败,因为我不想在稍后保存空项目。
当我创建新项目时,我无法知道什么是合理的默认值,因此使用有效数据预先填充新模型似乎不是一种选择。
有什么建议吗?
更新:在处理切线相关的问题时,我意识到我使用的是Backbone.js 0.9.0版。当这个版本发布时,其他人遇到了同样的问题,他们在GitHub的this issue上投诉。
Jeremy修改了0.9.1中的验证来解决这个问题。将(暂时)空模型添加到集合中是一种有效的现实世界用例。您可以在视图中处理新的空模型,但是如果您像管理项目列表一样管理项目列表,则会强制您收集项目视图(包括空白视图)无效的模型。对于其他直截了当的情况来说,这是一个非常笨拙的解决方法。很高兴这已得到修复。
不添加无效模型在理论上是有道理的,但我想不出让用户添加新行的更好方法。我想我可以在视图中处理所有这些内容,然后在该集合有效时将其添加到集合中,但这会使此应用程序的其他方面复杂化。你的例子工作的很好,但是当我在我的应用程序中尝试它时,'options'参数被'{silent:true}'对象覆盖,Backbone.js似乎自动鞋拔。我现在很困惑。 – 2012-03-09 13:12:51
您不应该添加无效模型 - 视图应该捕获模型验证发送的'error'消息,并让用户修复它们的输入或将其取消。当我从我们的服务器中抽取东西时,获取无效数据我只是将它放在地板上(并将消息发送到我们的Ajax日志记录工具),因为集合中的无效模型是'坏主意' – tkone 2012-03-10 14:41:13