2

我有一个 1406 的数组,其中每个对象都有三个字符串属性。但它永远不会在 Chrome 中呈现,只会冻结页面。它在 IE 中工作得很好。问题来自 push.apply。我正在使用 knockout.js 2.20。为什么这需要永远?我将一项发送到数组中,它工作得很好。淘汰赛不应该能够处理数组中的 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);
        }
4

2 回答 2

0

关于这段代码:

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);
});
于 2012-12-16T03:48:57.233 回答
0

我应该首先这样做。重新启动我的计算机对 Chrome 做了一些事情。现在工作正常,很抱歉造成混乱。规则 #1 如果出现问题,请务必重新启动计算机。

于 2012-12-17T15:48:10.730 回答