IE - капризный маленький ..... не так ли.
При выполнении привязки данных с помощью JavaScript, если будет значительное обновление пользовательского интерфейса, я делаю что-то вроде следующего.
function ajaxCallback(listOfDataItems){
var addToUiFunction = function(item){
// add it to the ko.observable array which is data bound to the UI
myDataBoundArray.push(item);
};
for (var i = 0, arrayLength = listOfDataItems.length; i < arrayLength; i++){
var temp = listOfDataItems[i];
//create an immediately executing function to close around
//the item that returns a function to call at a later date.
var tempFunction = (function(){
var item = temp;
return function() { addToUiFunction(item) };
})();
setTimeout(tempFunction, 0);
}
}
Что здесь произошло, так это то, что я добавляю только один элемент в пользовательский интерфейс одновременно.Я использую setTimeout с задержкой 0, чтобы отложить выполнение отдельного добавления до завершения текущего вызова.Это означает очень короткие единицы работы, которые не будут превышать время вашего браузера.
ps код немного хитрый, он просто пытается проиллюстрировать точку.