2012-05-19 78 views
0

我有一個簡單的列表式骨幹應用程序,我正在使用Rails後端。Backbone一次性Ajax請求

我有一個集合:

var ItemList = Backbone.Collection.extend({ 
    model: Item, 

    initialize: function(id) { 
    this.id = id; 
    }, 

    url: function(){ 
    return '/lists/' + this.id + '/items'; 
    }, 

}); 

所有標準的CRUD操作做工精細的模型。但我有一個「額外」路線 - 「清除」,將清除一個節目列表中的所有項目。這條路線將是:

/lists/[:id]/clear 

因爲這是正常的CRUD操作之外,有沒有辦法把它掛到正常的收集,或做我做了什麼不同的?當你調用reset沒有任何參數

clear: function() { 
    var _this = this; 
    $.ajax({ 
     url: '/lists/' + this.id + '/clear', 
     //... 
     success: function() { 
      _this.reset(); 
     } 
    }); 
} 

,它會刪除所有從集合型號:

回答

2

您可以在您的收藏集上創建一個名爲destroy的方法,並且在那裏您可以採用多種方法之一來製作AJAX請求(按照與Backbone的和諧順序)。請注意,您可能不想調用您的收集方法clear,因爲Backbone Models已經有一個帶有不同語義的clear方法。

  1. 創建正確的URL和ID的扔掉的Backbone.Model實例,然後調用它
  2. 呼叫Backbone.sync「摧毀」與方法「刪除」,並只是一個扔掉的模型對象「 url'屬性和空'toJSON'函數的正確ID
  3. 直接調用jQuery $.ajax
2

你可以添加你自己的方法執行/lists/:id/clear,然後在收集做了reset當它完成。

+0

我唯一需要注意的是,這可能會令人困惑,因爲Backbone Models有一個名爲'clear'的方法,可以在不聯繫服務器的情況下清除瀏覽器內數據。可能會令人困惑。可能更好地使用'destroy'。 –

+0

好點。我更新爲clearAll。 – user577808