2012-05-16 67 views
0

我是新來的主幹,我試圖發送刪除命令。我使用後修改選項,但刪除只發送方法。下面的示例:Backbone.js發送變量與銷燬/刪除

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?

+0

您使用的是什麼版本的Backbone.js? ('console.log(Backbone.VERSION)') –

+0

我正在使用0.9.2 –

回答

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); 
} 

這是根據您的機型是否是新的,或者不產生你的網址爲您的飛行。

您應該怎麼做,而不是將您的Model.url財產默認爲'/products/ajaximage'是將Model.urlRoot財產默認爲'/products/ajaximage'。這應該允許您執行Model.destroy()並將模型ID作爲請求URL的一部分發送到服務器,以便您知道需要刪除的模型。

+0

不,我的要求是:/ products/ajaximage –

+0

這個工作在發送字符串的一部分:urlRoot:「/ products/ajaximage 「, \t \t url:function(){ \t \t \t var base = this.urlRoot || (this.collection && this.collection.url)|| 「/」; \t \t \t如果(this.isNew()) \t \t \t \t返回基地; \t \t \t return base +「?id =」+ encodeURIComponent(this.id); \t \t} –

+0

我錯了,修改了我的答案。 ;○ –