KNOCKOUT.js在Chrome中用大数组渲染HTML需要很长时间



我有一个 1406 的数组,其中每个对象都有三个字符串属性。但它永远不会在Chrome中呈现,只是冻结页面。 它在IE中工作得很好。 问题发生在 push.apply 上。 我正在使用敲除.js 2.20。 为什么这需要很长时间? 我将一个项目发送到数组中,它工作正常。 KNOCKOUT 不应该能够处理数组中的 1406 个项目吗?

 <div data-bind="foreach: powerSchoolCourses">
                            <div data-bind="html: courseName"></div>
                        </div>
    var convertedPowerSchoolCourses = ko.utils.arrayMap(powerSchoolCourses, function (jsonArrayFromService) {
                        return new PowerSchool(item);
                    });
    self.powerSchoolCourses.push.apply(self.powerSchoolCourses, convertedPowerSchoolCourses );

        function PowerSchool(data) {
            var self = this;
            self.courseName = ko.observable(data.courseName);
            self.courseNumber = ko.observable(data.courseNumber);
            self.id = ko.observable(data.id);
        }

关于此代码:

var convertedPowerSchoolCourses = 
  ko.utils.arrayMap(powerSchoolCourses, function (jsonArrayFromService) {
      return new PowerSchool(item);
});

我认为您可能为arrayMap函数提供了错误的参数。 第一个参数应该是来自服务的原始数据,第二个参数中的函数具有应在函数内部使用的参数。 所以我认为你真正需要做的是:

var convertedPowerSchoolCourses = 
  ko.utils.arrayMap(jsonArrayFromService, function (item) {
      return new PowerSchool(item);
});

我应该首先这样做。 重新启动我的电脑对 Chrome 做了一些事情。 现在工作正常,很抱歉造成混乱。 规则#1如果某些内容无法正常工作,请始终重新启动计算机。

最新更新