javascript - backbone.js model.save 没有设置 id

标签 javascript jquery backbone.js

我继承了一个基于主干 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/

相关文章:

javascript 正则表达式模式匹配 css 选择器

jquery - 克隆 div 中输入 block 的 AJAX 更新

javascript - 如何根据主干模型的响应创建/更新主干 View ?

javascript - 可拖放列表

cordova - 如何修复 Windows Phone 中软按钮与应用程序重叠的问题?

ruby-on-rails - 使用 rspec 在 Rails 3.2 中测试 JSON API,使用 Backbone 将发送的精确 PUT/POST 主体

javascript - 使用 firebase 和 Angular 在其中插入一些数据后无法显示我的数组数据?

javascript - 使用 mobile detector js 检测设备和操作系统类型

javascript - 错误的元素集中在 Chrome 中

jquery - 是否可以在 jQuery 中使用多个变量而不是选择器