Zbudowałem aplikację internetową za pomocą websockets i vuejs.websocket + vuejs: migotanie ekranu, widoczny kod wąsy
W DOM chcę pętli nad danymi obsługiwanymi przez vuejs. Dane są jednak ustawiane później na osi czasu, po nawiązaniu połączenia internetowego i odebraniu danych.
Do tego momentu (około 0,5 sekundy) można zobaczyć kod wąsy dla vuejs na stronie, a następnie zobaczyć migotanie i dodawanie rzeczywistych danych.
ja stworzyć ViewModel, podczas odbierania danych z połączenia websocket, tak:
onMessage: function (e) {
new Vue({
el: '#messages',
data: {
messages: e.data
}
});
}
Co Próbowałem już było inicjowanie ViewModels na stronie obciążenia, i ustawić dane później:
var vms = {
messages: new Vue({
el: '#messages',
data: {
messages: {
}
}
})
};
W przypadku onMessage
z websocket:
var vm = vms.messages;
vm.$data = { messages: body };
Problem polega jednak na tym, że nadal występuje opóźnienie, dopóki nie nastąpi inicjalizacja vm. Sekwencja jest tak:
strona obciążenia -> widoczny kod wąsy -> Kod wąsy jest ukryta, ponieważ dane są ustawione na pustym obiekcie -> prawdziwe dane są wyświetlane po jego otrzymaniu przez websocket
Wszelkie pomysły/najlepsze praktyki w tej sprawie?
użycie wąsy ustawić classname, ukryć wszystko ale nazwy klasy w CSS. CSS nie trafi na nie-interpolowany symbol zastępczy, a gdy zmieni się w prawdziwą klasę css, przestanie być ukrywany. – dandavis