我知道这已被多次询问,但我无法找到解决问题的方法。在所有其他问题中,答案与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()
它有效,DELETE请求虽然以500错误(obviasly)返回,但仍会发送。所以它告诉我网址等正确并正常工作..
我不确定为什么我的破坏方法不起作用。
更新
有趣的是,当我记录上面创建的模型时,它看起来像这样:
Load {cid: "c6", attributes: Object, _changing: false, _previousAttributes: Object, changed: Object…}
所以那个说Load(模型的名称)和另一个Backbone.Model
答案 0 :(得分:3)
我的猜测是你可能没有为你的模型设置urlRoot属性。
答案 1 :(得分:-1)
我最近碰到了这个。这不是一个Backbone问题,而是一个jQuery问题。 jQuery问题默认为'json'的dataType,并且它期望数据中有JSON有效负载,所以当你发出调用时,jQuery实际上放弃了DELETE。
要解决这个问题,请尝试使用一些将传递给jQuery.ajax的选项进行删除:
model.delete({
type: 'text',
contentType : 'text/plain'
});
我发现这就像魅力一样。