Подтвердить что ты не робот

Нокаут "мерцающий" вопрос

Я создаю SPA (одностраничное приложение), используя KO. приложение выглядит как книга, и пользователь может перелистывать страницы.

Проблема заключается в том, что каждый раз, когда загружается страница, есть короткий момент, когда страница "мерцает", и пользователь видит неровную версию страницы. Я предполагаю, что это вызвано тем фактом, что большая часть стиля зависит от привязок ko, поэтому до тех пор, пока ko не закончит "волшебство", пользователь получает представление о незашифрованном коде.

Можно ли сказать, когда KO закончил все свои привязки и только затем покажет страницу?

Мне удалось частично решить проблему, установив тайм-аут перед загрузкой представления, но, конечно, это не очень хорошее решение.

4b9b3361

Ответ 1

Да, на самом деле это очень просто. Нанесите display:none на верхний уровень div (или w/e container) и data-bind="visible: true". Это приведет к тому, что страница будет скрыта до тех пор, пока нокаут не отобразит ее через привязку (что, очевидно, не может произойти до ее полной загрузки).

Поскольку вы используете не наблюдаемое значение, Knockout даже не потрудится снова проверить это. После первоначальной привязки не должно быть проблем с производительностью.