2015-12-02 25 views
0

我正在使用Backgrid和分頁與骨幹,我使用fetch過濾集合,後者又更新了Backgrid表和Paginations控件。Backbone.js在過濾結果後獲取重置爲原始結果集

filterFunction: function (query) { 
    _.each(query, function (q) { 
     if(List.grid.collection.queryParams.hasOwnProperty(q.key)) { 
     var firstValue = List.grid.collection.queryParams[q.key] 
     List.grid.collection.queryParams[q.key] = firstValue + ',' + q.value 
     } else { 
      List.grid.collection.queryParams[q.key] = q.value 
      } 
     }) 
     List.grid.collection.fetch(
     { 
      'reset': true 
    }) 
    } 

效果很好,一旦集合已被過濾,我可能例如有一個集合,是6長,而不是60我的問題出現時,我想不過濾收集並返回到原來的60長採集。我確實認爲我可以調用原始的listAllFunction - 但是該函數會將頁面和分頁控件重新繪製到頁面上。我認爲一個更好的方法是編寫某種函數來覆蓋取回來詢問所有結果。所以像這樣:

List.grid.collection.**fetchALL** (
    { 
     'reset' : true, 
     'url': // tell it to go and get ALL the results? 

    } 
) 

這可能嗎?或者我應該採取什麼方法提出任何建議?

回答

0

當你決定使用自定義查詢參數獲取篩選集合,你可以重新集合之前抓取恢復原queryparams:

List.grid.collection.queryParams = Backbone.PageableCollection.prototype.queryParams; 
List.grid.collection.fetch({reset: true});