2012-03-07 79 views
2

當我調用模型的骨幹銷燬方法時,我得到這個錯誤。骨幹破壞錯誤

A「URL」屬性或功能必須指定

我使用的是本地收集和我在網上看到的地方,保存方法是所謂的滅方法,尋找一個網址。有沒有解決的辦法。我怎樣才能防止錯誤發生。

+2

什麼是你想實現什麼? 'destroy'方法的目的是刪除服務器*上的模型*。 – nrabinowitz 2012-03-07 22:34:47

+0

我想刪除集合中的模型,但我沒有從我所在的代碼訪問集合。我認爲銷燬會工作,但它會導致錯誤,因爲模型沒有網址。所以我試圖找到一個解決方案。有沒有辦法從模型本身獲取模型所在的集合。 – Chapsterj 2012-03-07 22:47:09

+0

集合有一個'remove'方法。 – JayC 2012-03-07 22:48:12

回答

2

由於nrabinowitz在評論中表示,銷燬是從服務器中刪除,並不會真正從集合中刪除,因爲它是。

如果問題是從集合刪除它,因爲它似乎在評論...

模型可以訪問它通過模型的collection屬性的集合。

var Model = Backbone.Model.extend({ 
     defaults:{ name: 'bob' } 
    }), 
    Collection = Backbone.Collection.extend({ 
     model: Model 
    }); 

var c = new Collection([{ name: 'joe'}, {name: 'h'}, {name: 'bob'}]); 

var m = c.at(1); // get model at index 1 name = h 

m.collection.remove(m); // access the collection via the model we pulled out 

console.log(c.length); // only 2 models within :) 

http://jsfiddle.net/Pn2Vw/1/

+0

謝謝你的回答;我沒有意識到模型有這個集合屬性。 我很好奇當模型被添加到多個集合時會發生什麼,所以我檢查了[source](http://backbonejs.org/docs/backbone.html#section-81),發現Collection._prepareModel將設置模型的集合屬性。因此,如果將相同的模型添加到多個集合中,則其集合屬性將指向它添加的最後一個。 – Aaron 2012-11-26 22:04:30

+0

另外,我相信你的陳述「[摧毀]不會真正從集合中刪除」是不正確的。每[Model.destroy來源](http:// backbonejs。org/docs/backbone.html#section-59)和[Collection._onModelEvent source](http://backbonejs.org/docs/backbone.html#section-105),集合將對觸發的「銷燬」事件做出反應該模型。一個注意事項:通過destroy事件傳遞的collection參數反映了模型的集合屬性,_not_不一定是將事件轉發到其任何偵聽器的集合。 – Aaron 2012-11-26 22:14:27

0

我也有類似的問題。我的問題是,我使用的銷燬時的回調,以確定是否從coollection或不刪除模型:

this.model.destroy({ 
    success: function(model, response) { 
    this.remove(); 
    } 
}); 

也就是說,從服務器返回Error 500測試中,我得到了同樣的錯誤上我第二次嘗試致電銷燬

該解決方案來自the manual。看起來雖然我沒叫this.remove();,該模型從集合中刪除:

通行證{等待:真正}如果你想等待服務器從集合刪除模型前作出迴應。

結果看起來像這樣:

this.model.destroy({ 
    wait: true, 
    success: function(model, response) { 
    this.remove(); 
    } 
});