在过滤结果重置为原始结果集后获取Backbone.js

时间:2015-12-02 12:01:46

标签: backbone.js filtering backbone-collections backgrid

我在Backbone中使用Backgrid和Pagination,我使用fetch过滤集合,后者又更新了Backgrid表和Paginations控件。

 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 - 但该函数将backgrid和分页控件重绘为页面。我认为更好的方法是编写某种函数来覆盖获取以请求所有结果。如下所示:

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

   }
)

这可能吗?或者我应采取什么方法的建议?

1 个答案:

答案 0 :(得分:0)

当您决定使用带有自定义查询参数的fetch过滤集合时,您可以在获取之前重置集合还原原始查询副本:

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