backbone.js model.save没有设置id

5 javascript jquery backbone.js

我继承了一个基于骨干js的应用程序.我真的很喜欢骨干,我只是开始了解它.根据我的理解,当在新实体上调用model.save时,它应该将其发布到服务器,服务器应该返回相同的json,但是具有分配的id,并且主干应该将该id保存到模型,以便进一步保存结果到PUT使用ID进行更新.

但是,当我调用model.save()然后尝试获取model.id属性时,它为null.

这是因为我没有回电话吗?所以该物业尚未设定?

我如何设置成功回调?打电话model.save({success: function(){...}})不起作用?

这是实际的电话:

model.save(null, {
    success: function () {
        alert('success');
    },
    error: function () {
        alert('error');
    }
});
Run Code Online (Sandbox Code Playgroud)

Bri*_*sio 4

这让人感觉有些奇怪。设置silent: true只是让它不会被触发。其他一切都应该正常发生。换句话说,不要认为设置slient: true是正确的答案......

我怀疑你实际上在某个地方抛出了异常(可能通过验证或类似的东西),并且不知何故,设置silent: true导致所有内容都流过。

我强烈建议您删除此选项并检查控制台或使用调试器运行...我怀疑您的某个地方潜伏着一个错误。

一些建议:查看该函数的注释源model.set。它会在您的success回调被调用之前被调用。在该函数内部,如果 为 false,将会发生几件事情silent。其中包括验证、单个属性更改触发器和全局更改触发器。我敢打赌,要么验证失败,要么正在监听更改的东西抛出异常。