169 похожих чатов

Ребята, стоит такая задача. есть лист с айтемами. после загрузки

айтемов, картинки отображаются не сразу, а появляются по мере загрузки. и так получается, что картинки появляются в шахматном порядке (из-за веса картинки). а нужно, чтобы скелетон (или спиннер) крутился, пока загрузятся айтемы, потом полностью картинки и отобразить все разом.

сделал такое решение:
у компонента item, к тегу img повесил @load=“loaded”, как только картинка загрузится, функция loaded эмитит в itemList, в itemList, все это аккумулируется и сравнивается с длинной массива с айтемами. как только значения равняются, isLoading переходит false и отключается спиннер и отображаются айтемы.

<spinner v-if=“isLoading”/>
<div v-show=“!isLoading && items.length”>
<item v-for=“item in items”/>
</div>

такое решение норм?

8 ответов

13 просмотров
Andrew-Manuylov Автор вопроса

работать то работает. просто думается что решение не очень

Andrew Manuylov
работать то работает. просто думается что решение ...

Ну а какие альтернативы? В целом логично, что айтемс лист собирает в себе инфу о том скока в нем айтемов отчитались о своей загрузке и отображает это спиннером

Andrew-Manuylov Автор вопроса
Pavel Arsieiev
Ну а какие альтернативы? В целом логично, что айте...

я лично решение вижу на стороне бэка, чтобы сделать два варианта картинок: thumbnail и full и для списка юзать thumbnail) но такой возможности щас нет)

через promise all грузишь?

Andrew-Manuylov Автор вопроса

что ты имеешь ввиду?

Andrew Manuylov
что ты имеешь ввиду?

Есть метод Promise.all() в которую закидываешь функцию которая должна будет выполниться большая работа типа импорта данных с одного сервера на другой.

Andrew-Manuylov Автор вопроса

айтемсы грузятся разом, ссылки на картинки вставляются в каждом айтеме

Andrew Manuylov
айтемсы грузятся разом, ссылки на картинки вставля...

тогда можно какой-то компьютед на массив обьектов создать когда картинка загрузилась - прокидывать на верх ивент и Vue.$set'ом сетить loaded=true а компьютед будет что-то типо того imagesLoaded() { return items.every(item=>item.loaded); }

Похожие вопросы

Обсуждают сегодня

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
DS
8
Карта сайта