2013-05-17 85 views
0

我知道這已被問了很多次,但我找不到解決我的問題。在所有其他問題的答案必須做的ID沒有被設置或像_id等東西。destroy()不發送DELETE請求

我沒有任何自定義同步或銷燬方法。一切都是標準的。

我的模型和收藏:

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錯誤(obviasly)返回刪除請求被髮送。所以它告訴我的網址等是正確的和工作..

只是不知道爲什麼我的銷燬方法不工作。

UPDATE

有趣的是,當我登錄它上面創建的模型是這樣的:

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

所以一個上述負載(模型的名稱)和其他Backbone.Model

回答

3

我的猜測是你可能沒有爲你的模型設置urlRoot屬性。

+0

請看看我的更新 – Harry

+0

model.url()給出了我們正確的url http://192..../api/loads/2 – Harry

+0

我會嘗試刪除負載模型的localStorage屬性。將它留給Loads集合。 –

-1

我最近碰到這個。這不是Backbone問題,而是一個jQuery問題。 jQuery問題默認爲'json'的數據類型,並且它期望數據中有一個JSON負載,所以當你發出這個調用時,jQuery實際上會放在DELETE上。

爲了解決這個問題,嘗試做你刪除與該會傳遞給jQuery.ajax一些選項:

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

我發現,就像一個魅力。

+0

我想你的意思是毀滅?這對我不起作用 – Harry

+0

哎呀..是的..噢,好吧...您的服務器是否希望刪除某種有效負載?或者它是舊式服務器之一,你必須做一個POST來做刪除? –