半大規模なデータ セットをマッピングしようとすると、速度が遅いことに気付きます.. ブラウザが数秒間フリーズすることさえあります。Jqueryマップによるものかノックアウトによるものかはわかりません
遅くなるこの部分は
model.Entries($.map(data.Entries, function (e, i) { return new FieldFormatEntry(e.Name, e.HasTransformationList,e.Caption, e.HeaderName, e.Format, e.AcceptedFormats); }));
ここにコードがあります
function FieldFormatEntry(name,transformationList,caption, headerName, format, acceptedFormats) {
var self = this;
self.Name = ko.observable(name);
self.Caption = ko.observable(caption);
self.HeaderName = ko.observable(headerName).extend({ required: true });
self.Format = ko.observable(format).extend({ required: true });
self.AcceptedFormats = ko.observableArray();
if (acceptedFormats !== null && acceptedFormats.length > 0)
{
var formats = ko.utils.arrayMap(acceptedFormats,function(item) {
return item;
});
self.AcceptedFormats.push.apply(self.AcceptedFormats, formats);
}`enter code here`
self.hasTransformationList = transformationList;
self.hasAcceptedFormatsList = ko.computed(function () {
return self.AcceptedFormats().length > 0;
}, this);
}
function dataSet() {
var self = this;
self.Entries = ko.observableArray();
self.showTip = ko.computed(function () {
return (self.Entries().length > 1);
}, this);
}
function fillAndBindEntries(data) {
var model = new dataSet();
model.Entries($.map(data.Entries, function (e, i) { return new FieldFormatEntry(e.Name, e.HasTransformationList,e.Caption, e.HeaderName, e.Format, e.AcceptedFormats); }));
ko.applyBindings(model);
}
何か案は ?どうすればパフォーマンスを向上させることができますか