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

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

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

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

31
Tomer 29 Янв 2013 в 16:34

2 ответа

Лучший ответ

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

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

55
Kyeotic 29 Янв 2013 в 17:30

Я думаю, что на этот вопрос лучше ответили ранее с помощью шаблонов.

Каков наилучший способ скрыть экран во время создания нокаутирующих js-привязок?

4
Community 23 Май 2017 в 11:54