Backbone.js取消了Model.destroy

时间:2011-07-10 22:48:36

标签: javascript backbone.js

当我调用Model.destroy时,它会向服务器发送正确的请求。但是,我处理错误不是RESTful,我返回一个带有一些适当信息的JSON,而不是抛出一个http异常。

现在我希望能够阻止在回调中删除模型。对于前者;

window.UserView = Backbone.View.extend({
    //Other stuff here.
    clearSuccess: function (model, response) {
        if (!response.Exception) {
            $(this.el).fadeOut('fast', function() {
                $(this).remove();
            });
        }
        else {
            //Can I cancel the destroy here?
        }
    },
    clearFailed: function (model, response) {
        alert("failed");
    }
});

这是我在success方法上发送到模型的errordestroy参数的2个回调。所以我的评论是,我想告诉Backbone.js“没关系,服务器说我不能删除,所以保持模型”。我该怎么做?

2 个答案:

答案 0 :(得分:0)

最简单的事情可能是返回一个不成功的HTTP状态代码(400-599)和一个带有应用程序级错误详细信息的JSON文档的响应主体。有关HTTP状态的更多信息,请参阅此主题:

Using HTTP status codes to reflect success/failure of Web service request?

如果你这样做,骨干应该自动知道故障状态意味着服务器上的销毁没有成功,我认为它会做正确的事。

答案 1 :(得分:0)

您可以使用ASP.net MVC控制内容正文。只需将Response.StatusCode属性设置为您要使用的值,然后返回JSON响应或内容响应,或其他任何内容。

Response.StatusCode = (int)HttpStatusCode.Conflict;
return Json( errorMessage );

工作得很好。