在剔除中,更改数据时更改分页

时间:2018-08-10 07:14:56

标签: javascript html knockout.js knockout-3.4

在淘汰赛中,我希望更改/刷新数据更改时的分页。 例如:我的数据集为100 [每页5条记录],我在第10页上。现在有了更多搜索,数据从100更改为5,我在第10页上,但是当数据更改时,我要分页在首页上。即要刷新的页面。

这是我的[Fiddle](https://jsfiddle.net/975ncawv/281/

MyVM.prototype.loadData = function(rawData) {
  this.items(rawData.map(RowModel.fromRawDataPoint));
};
ko.applyBindings(new MyVM(myData));

2 个答案:

答案 0 :(得分:2)

  

但是当数据更改时

this.items.subscribe( /* ... */ )
  

我希望分页显示在首页

this.pageNumber(0)

放在一起:

this.items.subscribe(function() {
  this.pageNumber(0);
}, this);

我没有发现与搜索数据有关的任何逻辑,但我希望能做到以下几点:

this.filteredItems = ko.pureComputed(function() {
  return this.items().filter(/* ... */);
}, this);

实施后,您可以将items上的订阅更改为filteredItems,以确保在数据 source 更改时重置 both 以及搜索查询何时更改。

答案 1 :(得分:2)

loadData函数中需要更改两件事。

  1. all的observableArray必须使用新的items值进行更新,因为它在第65行以类似的方式获取值。
  2. pageNumber需要重置为0,因为paginatedall正在通过计算函数监听它。 (并且表格正在显示paginated的值。)

看起来像updated fiddle