当服务器返回无效属性时,Backbone模型不会调用回调

时间:2014-05-01 21:38:50

标签: backbone.js

我有一个具有title属性的Backbone模型。在验证函数中,它检查标题是否少于40个字符。

在服务器上保存时,它通过php的htmlentities函数*运行title属性。然后,我们输出保存的结果。

如果输入包含任何可以逃避的字符,则htmlentities的输出将比输入长。如果发生这种情况,并且新字符串超过40个字符,则客户端上的模型在尝试解析保存的属性时将无法通过验证。发生这种情况时,不会调用成功/失败回调。这使得它看起来像页面已挂起。

在理想的解决方案中,我希望这可以调用成功回调并忽略失败(因为40个字符更多是软限制)。如果这是不可能的,我希望它至少可以调用失败的回调。

有谁知道如何做到这一点?

谢谢! --Connor

*是的,我知道保存转义数据通常被视为不良做法,但向后兼容性。

1 个答案:

答案 0 :(得分:1)

您传递给save()的选项会传递到sync(),然后传递给set(),然后传递给_validate(),如果传递给它的选项将validate设置为false。试试这个:

model.save(null, { validate: false })