Backbone.js使用destroy / delete发送变量

时间:2012-05-16 12:24:08

标签: javascript ajax backbone.js

我是骨干新手,我正在尝试发送删除命令。我正在使用post修改选项,但delete只发送方法。示例如下:

    Backbone.emulateHTTP = true;
    Backbone.emulateJSON = true;
    ProductImageModel = Backbone.Model.extend({

            initialize : function() {
            },

            url : "/products/ajaximage",
        });
    //Later called using
    var image = new ProductImageModel({id: id});
    image.destroy();

问题是,id永远不会通过,$ _POST中出现的所有内容都是:

Array
(
    [_method] => DELETE
)

有没有办法在删除中传递id?

1 个答案:

答案 0 :(得分:2)

在查看带注释的源代码并查看代码时......您将使用静态属性覆盖Model.url方法。 Backbone.Model.url方法如下所示:

url: function() {
    var base = getValue(this, 'urlRoot') || getValue(this.collection, 'url') || urlError();
    if (this.isNew()) return base;
    return base + (base.charAt(base.length - 1) == '/' ? '' : '/') + encodeURIComponent(this.id);
}

根据您的模型是否是新模型,您可以随时为您生成URL。

您应该做什么,而不是将Model.url属性默认为'/products/ajaximage',而是将Model.urlRoot属性默认为'/products/ajaximage'。这应该允许您执行Model.destroy()并将模型的ID作为请求URL的一部分提供给服务器,以便您知道需要删除哪个模型。