敲除要求组件崩溃.为什么



这是我的基因组件,它显示了带有一些数据的表。(我尽我所能简化了它,只是为了更容易理解(

数据阵列中没有太多行时,它可以正常工作,但是如果我翻阅所有页面,则有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>

我认为这足够了。

最新更新