我有一个使用 Knockout 3.4 和其他库(inversifyJS,knockout.validation,axios,jQuery)的Web应用程序。
从昨天开始,我在尝试使用axios和knockout可观察数组填充异步选择列表时遇到了巨大的性能问题。
这是简化的jsfiddle,它显示了我正在做的事情:
https://jsfiddle.net/m2r9Ljb2/3/
// Constructor for an object with two properties
var Country = function(name, population) {
this.email = name;
this.countryPopulation = population;
};
var viewModel = {
availableCountries : ko.observableArray([]),
selectedCountry : ko.observable() // Nothing selected by default
};
ko.applyBindings(viewModel);
$.getJSON('https://jsonplaceholder.typicode.com/comments', function( data ) {
ko.utils.arrayPushAll(viewModel.availableCountries, data);
})
如果我在jsfiddle中运行此代码,它的执行速度非常快。 如果我将此代码插入到我的应用程序中,则在IE11和Firefox中再次响应UI之前需要6秒钟。
似乎没有任何帮助,我也不知道自己能做些什么。 我试过"限速"和#34;延期更新"但没有任何改变。
有人知道问题是什么吗?有什么我可以做的调试问题?为什么它在jsfiddle中表现不同?
答案 0 :(得分:0)
除非您要添加数组,否则为什么不尝试
viewModel.availableCountries(data);
或
ko.utils.arrayPushAll(viewModel.availableCountries(),data);
viewModel.availableCountries.valueHasMutated();