【问题标题】:In knockout Change Paging when Data is changed在数据更改时的淘汰赛中更改分页
【发布时间】:2018-08-10 07:14:55
【问题描述】:
在淘汰赛中,我希望在数据更改时更改/刷新分页。
例如:我有一个 100 [每页 5 条记录] 的数据集,我在第 10 页。现在有更多的搜索数据从 100 更改为 5,我在第 10 页,但是当数据更改时我想要分页在首页。即要刷新的分页。
这是我的 [小提琴] (https://jsfiddle.net/975ncawv/281/)
MyVM.prototype.loadData = function(rawData) {
this.items(rawData.map(RowModel.fromRawDataPoint));
};
ko.applyBindings(new MyVM(myData));
【问题讨论】:
标签:
javascript
html
knockout.js
knockout-3.4
【解决方案1】:
loadData 函数内部需要更改两件事。
-
all observableArray 需要更新为 items 的新值,因为它在第 65 行以类似的方式获取值。
-
pageNumber 需要重置为 0,因为 paginated 和 all 正在通过计算函数监听它。 (并且表格显示paginated 的值)。
看起来像这样updated fiddle。
【解决方案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 上,以确保您在数据来源发生更改时重置两者以及何时更改搜索查询发生了变化。