Ich baute eine Web-App mit Websockets und Vuejs.websocket + vuejs: Bildschirm Flackern, sichtbaren Schnurrbart Code
Im DOM möchte ich die Daten von Vuejs überlappen. Die Daten werden jedoch später in der Zeitleiste festgelegt, nachdem eine Websocket-Verbindung hergestellt wurde und die Daten empfangen wurden.
Bis zu diesem Punkt (etwa 0,5 Sekunden), können Sie den Code für den Schnurrbart für vuejs auf der Website selbst sehen, dann sehen Sie es flimmern und die echten Daten hinzufügen.
Ich schaffe das Ansichtsmodell, wenn Daten aus dem websocket Verbindung empfangen, wie folgt aus:
onMessage: function (e) {
new Vue({
el: '#messages',
data: {
messages: e.data
}
});
}
Was ich bereits versucht wurde, um die Viewmodels auf Seite Last Initialisierung und später den Datensatz:
var vms = {
messages: new Vue({
el: '#messages',
data: {
messages: {
}
}
})
};
im onMessage
Ereignis des websocket:
var vm = vms.messages;
vm.$data = { messages: body };
Das Problem ist jedoch, dass es immer noch eine Verzögerung gibt, bis der vm initialisiert ist. Die Sequenz ist wie folgt:
Seite zu laden -> sichtbaren Schnurrbart Code -> Schnurrbart-Code versteckt, da die Daten in ein leeres Objekt festgelegt ist -> real-Daten, nachdem sie von der websocket
Irgendwelche Ideen erhalten hat gezeigt/Best Practices in dieser Angelegenheit?
Verwendung Schnurrbart einen Klassennamen zu setzen, verstecken alle, aber diese Klassennamen in CSS. Das CSS trifft nicht auf den nicht interpolierten Platzhalter und wenn es in eine echte CSS-Klasse umgewandelt wird, wird es nicht mehr versteckt. – dandavis