У меня есть сложная страница, которая использует нокаут для рендеринга содержимого с помощью шаблонов. Рендеринг занимает около 10 секунд, поэтому я хочу показать индикатор выполнения, пока это происходит. Я попытался добавить обратный вызов в шаблоне к методу afterRender
, который сломал страницу - я думаю, что этот метод больше связан с изменением HTML-кода, сгенерированного шаблоном.
Я также попытался создать обработчик привязки, который обновляет индикатор выполнения при каждом вызове:
ko.bindingHandlers.updateProgressBar = {
init: function (element, valueAccessor) {
viewModel.updateProgressBar();
}
};
...
<ul data-bind="template: {name: 'genericItemTemplate', foreach: ChildItems}, updateProgressBar: true"></ul>
К сожалению, хотя метод вызывается каждый раз, пользовательский интерфейс не обновляется до тех пор, пока шаблоны не полностью завершат рендеринг, поэтому я не получаю требуемый ход выполнения.
Я использую библиотеку шаблонов tmpl.
Как отобразить обновление пользовательского интерфейса в процессе работы шаблона, проходящего через большую коллекцию элементов в observableArray ??