这是我的基因组件,它显示了带有一些数据的表。(我尽我所能简化了它,只是为了更容易理解(
数据阵列中没有太多行时,它可以正常工作,但是如果我翻阅所有页面,则有1.5,000行或更多行会冻结,然后用" Out Out of Memory"错误消息崩溃。
什么可能导致错误?有办法解决此问题吗?
ko.components.register("table-pg", {
viewModel: function(params) {
// params
this.pageSize = +params["pageSize"];
this.allItems = ko.utils.unwrapObservable( params["values"] );
this.columns = ko.observableArray( params["columns"] );
this.totalPagesCount = ko.pureComputed(function () {
return Math.ceil(this.allItems.length / this.pageSize);
}, this);
this.pageNum = ko.observable(0);
this.items = ko.pureComputed(function () {
var startIndex = this.pageSize * this.pageNum();
return this.allItems.slice(startIndex, startIndex + this.pageSize);
}, this);
this.gotoNextPage = function () {
var pn = this.pageNum();
if (pn < this.totalPagesCount() - 1) this.pageNum(pn + 1);
}
},
template:'
<div>
<table>
<tbody data-bind="foreach: items">
<tr class="value-item" data-bind="foreach: $component.columns">
<td data-bind="
text: ko.pureComputed( function () {
return $parent.property($data).value()
} ),
"></td>
</tr>
</tbody>
</table>
<a href="#next" data-bind="click: gotoNextPage, text: nextPageTitle"></a>
</div>
'
});
问题与模板有关,因为您要对每列中的许多销售被销售。如果您有6列和1.5k个项目,则可以产生大约9000个功能。尝试使用FF:
<td data-bind="text: $parent.property($data).value()"></td>
我认为这足够了。