Backbone.Model.destroy在成功时不触发成功功能

ltd*_*ltd 17 backbone.js

所以,在我的一个观点中,我有这个功能:

delete_model: function() {
    var answer = confirm("Are you sure you want to delete this element?");
    if (answer) {
        this.model.destroy({
            success: function() {
                console.log("delete was a success");
            }
        });
    }
});
Run Code Online (Sandbox Code Playgroud)

当我ping它时,Ajax调用结束,后端正确删除模型并返回一个200标题,其中"OK"作为正文...但成功事件永远不会触发.我错过了什么吗?我该怎么办后端才能解雇这个事件?

小智 23

我刚遇到同样的问题.对我有用的解决方案是确保从服务器返回与已删除的json模型对应的json模型.

编辑:返回一个空的json响应就足够了.

不工作:

delete(model) {
    // deleted model from db
    return "Model was deleted";
}
Run Code Online (Sandbox Code Playgroud)

这确实有效:

delete(model) {
    // deleted model from db
    return model;
}
Run Code Online (Sandbox Code Playgroud)

要么:

delete(id) {
  // deleted model from db with this id
  return new Model {id: id};
Run Code Online (Sandbox Code Playgroud)

}

  • 验证发回空JSON - {}确实会触发成功. (7认同)
  • 我认为返回任何JSON都可以.返回除JSON之外的任何内容都是错误的. (3认同)
  • @IvanIvanić事实并非如此.正如泽克的回答所指出的那样,"渲染json:'成功''仍然失败,正如我已经证实的那样.我发现的最小工作响应(对于Rails)是`render json:{}`(成功回调的响应是{})或`render json:''`(成功回调的响应为null) (2认同)