0

我知道这已被问过很多次,但我找不到我的问题的解决方案。在所有其他问题中,答案都与未设置 ID 或 _id 等其他内容有关。

我没有任何自定义同步或销毁方法。一切都是标准的。

我的模型和收藏:

class Load extends Backbone.Model
    localStorage: new Backbone.LocalStorage 'relodr.load'
    urlRoot: relodr.api.url + "loads/"
class Loads extends Backbone.Collection
    model = Load
    localStorage: new Backbone.LocalStorage 'relodr.loads'
    url: relodr.api.url + "loads/"

这是我要删除模型的地方:

delete: (e) =>
        f = $(e.currentTarget)
        id = $(f.parent()).attr("data-id") 
        load = new Loads()
        load.fetch()
        model = load.get id
        console.log model
        model.destroy()

该模型已从集合中删除,但 DELETE 从未发送到服务器。

这是 console.log 模型:

Backbone.Model {cid: "c5", attributes: Object, collection: Loads, _changing: false,     _previousAttributes: Object…}
    _changing: false
    _events: Object
    _pending: false
    _previousAttributes: Object
    attributes: Object
    changed: Object
    cid: "c5"
    id: 2
    __proto__: Object

所以我有一个模型的 ID,我的模型确实有一个 URL 集。

如果我这样做:

model = new Load
    id: 99
model.destroy()

它起作用了,尽管它返回了 500 错误(显然),但仍发送了 DELETE 请求。所以它告诉我网址等是正确的并且有效..

只是不确定为什么我的销毁方法不起作用。

更新

有趣的是,当我记录上面创建的模型时,它看起来像这样:

Load {cid: "c6", attributes: Object, _changing: false, _previousAttributes: Object, changed: Object…}

所以一个说 Load (模型的名称)和另一个 Backbone.Model

4

2 回答 2

3

我的猜测是您可能没有为您的模型设置urlRoot属性。

于 2013-05-17T19:16:31.260 回答
-1

我最近遇到了这个。这不是 Backbone 问题,而是 jQuery 问题。jQuery 问题默认为“json”的数据类型,并且它期望数据中包含 JSON 有效负载,因此当您发出调用时,jQuery 实际上在 DELETE 上放屁。

要解决这个问题,请尝试使用将传递给 jQuery.ajax 的一些选项进行删除:

model.delete({
    type: 'text',
    contentType : 'text/plain'
});

我发现这就像一个魅力。

于 2013-05-17T19:49:49.517 回答