我继承了一个基于主干 js 的应用程序。我真的很喜欢 backbone,我才刚刚开始了解它。根据我的理解,当在新实体上调用 model.save 时,它应该将其发布到服务器,服务器应该返回相同的 json 但分配了一个 id, Backbone 应该将该 id 保存到模型中,以便进一步保存 PUT 的结果带有用于更新的 ID。
但是,当我调用 model.save()
然后尝试获取 model.id 属性时,它为空。
这是因为我没有回电吗?所以属性还没有设置?
如何设置成功回调?调用 model.save({success: function(){...}})
不起作用?
这是实际调用:
model.save(null, {
success: function () {
alert('success');
},
error: function () {
alert('error');
}
});
最佳答案
这有点奇怪。设置 silent: true
只会让所有事件都不会被触发。其他一切都应该正常进行。换句话说,不要假设设置 slient: true
是这里的正确答案...
我怀疑你实际上是在某个地方抛出异常(可能是通过验证或类似的东西)并且不知何故,设置 silent: true
导致一切都流过。
我强烈建议您删除此选项并检查您的控制台或使用调试器运行...我怀疑您的某个地方潜伏着一个错误。
一些建议:看看annotated source对于 model.set
函数。它会在您的 success
回调被调用之前被调用。在该函数内部,如果 silent
为 false,将会发生几件事。这些包括 validation , 个体 property change触发器,和一个 global change扳机。我敢打赌要么验证失败,要么正在监听更改的东西抛出异常。
关于javascript - backbone.js model.save 没有设置 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7583245/