【问题标题】:Backbone.js fetch after filtering results resetting to original result setBackbone.js 在过滤结果重置为原始结果集后获取
【发布时间】:2015-12-02 12:01:46
【问题描述】:

我正在使用 Backgrid 和 Pagination with Backbone,我正在使用 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 - 但该函数将背景网格和分页控件重绘到页面。我认为更好的方法是编写某种函数来覆盖 fetch 以询问所有结果。所以像:

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

   }
)

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

【问题讨论】:

    标签: backbone.js filtering backbone.js-collections backgrid


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-15
      相关资源
      最近更新 更多