0

我无法弄清楚我做错了什么。我的成功和错误回调没有触发,我正在从服务器返回 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.');
        }
    })
};
4

2 回答 2

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

于 2013-03-22T18:23:56.800 回答
0

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

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

error与回调相同的逻辑。

于 2013-03-22T13:49:48.740 回答