backbone.js model.save没有设置id

时间:2011-09-28 12:32:32

标签: 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');
    }
});

3 个答案:

答案 0 :(得分:4)

有些事情让人觉得奇怪。设置silent: true只会使事件不被触发。其他一切都应该正常发生。换句话说,不要假设在这里设置slient: true是正确的答案......

我怀疑你实际上是在某个地方抛出异常(可能是通过验证或类似的东西),并且设置silent: true导致一切都流过。

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

一些建议:查看model.set功能的annotated source。在调用success回调之前调用它。在该函数内部,如果silent为false,则会发生一些事情。其中包括validation,个别property change触发器和global change触发器。我敢打赌,验证失败或听取改变的事情都会引发异常。

答案 1 :(得分:0)

我需要在保存时设置silent:true:

    model.save(null, {
        silent: true,
        success: function () {
            alert('success');
        },
        error: function () {
            alert('error');
        }
    });

答案 2 :(得分:0)

我遇到了同样的问题,原来是因为我的自定义parse失败了