2015-12-02 99 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});