Backbone Destroy函数的成功回调不会触发

时间:2013-03-22 13:33:00

标签: javascript backbone.js backbone-views

我无法弄清楚我做错了什么。我的成功和错误回调没有触发,我从服务器返回JSON响应。关于我搞砸的地方的任何想法?

mysite.city.delete_photo = {
    "Model": Backbone.Model.extend({
        "id": "deletePhoto",
        "initialize": function initialize(id) {
            this.url = "/assets/ajax/delete_image.php?img_id=" + id;
        }
    }),
    "View": Backbone.View.extend({
        "initialize": function initialize(id) {
            _.bindAll(this,
                "render",
                "success");

            this.model = new mysite.city.delete_photo.Model(id);

            this.render();
        },
        "render": function render() {
            this.model.destroy({
                "cache": false,
                "success": this.success,
                "error": this.error
            });
        },
        "success": function success(model, data) {
            console.log("test");
        },
        "error": function error() {
            message('error', 'This image could not be deleted.');
        }
    })
};

2 个答案:

答案 0 :(得分:0)

successerror不是Model中的函数,但它们都是Model的fetch和save方法的回调。使用强制代码获取时,您可以触发成功或错误事件:

model.fetch({success: function(model, response, options) {
    console.log('success triggered');
});

error回调相同的逻辑。

答案 1 :(得分:0)

以下行

this.model = new mysite.city.delete_photo.Model(id);

应该是:

this.model = new mysite.city.delete_photo.Model({'id':id});

在第一种情况下,Id根本没有设置为模型,并且destroy返回false,甚至没有向服务器发送DELETE请求,因为模型没有ID并被视为new

http://backbonejs.org/#Model-destroy