我将Backgrid和Paging与Backbone一起使用,并使用fetch来过滤集合,从而更新Backgrid表和Paging控件。
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以请求ALL结果。所以类似于:
List.grid.collection.**fetchALL** (
{
'reset' : true,
'url': // tell it to go and get ALL the results?
}
)
这可能吗?或者对我应该采取的方法有什么建议?
当您决定使用带有自定义查询参数的fetch来过滤集合时,您可以在fetch之前重置集合还原原始查询参数:
List.grid.collection.queryParams = Backbone.PageableCollection.prototype.queryParams;
List.grid.collection.fetch({reset: true});