【发布时间】:2015-06-12 19:20:21
【问题描述】:
我使用 websockets 和 vuejs 构建了一个网络应用程序。
在 DOM 中,我想遍历 vuejs 处理的数据。然而,在建立 websocket 连接并接收到数据之后,数据会在时间轴中稍后设置。
到那时(大约 0.5 秒),您可以在网站本身上看到 vuejs 的小胡子代码,然后看到它闪烁并添加真实数据。
我创建 ViewModel,当从 websocket 连接接收数据时,像这样:
onMessage: function (e) {
new Vue({
el: '#messages',
data: {
messages: e.data
}
});
}
我已经尝试过在页面加载时初始化 ViewModel,然后再设置数据:
var vms = {
messages: new Vue({
el: '#messages',
data: {
messages: {
}
}
})
};
在websocket的onMessage事件中:
var vm = vms.messages;
vm.$data = { messages: body };
但问题是,在虚拟机初始化之前仍有延迟。顺序是这样的:
页面加载 -> 可见的小胡子代码 -> 小胡子代码被隐藏,因为数据被设置为一个空对象 -> 真实数据在被 websocket 接收后显示
关于这个问题的任何想法/最佳实践?
【问题讨论】:
-
使用 mustache 设置类名,在 CSS 中隐藏除该类名之外的所有内容。 CSS 不会碰到未插值的占位符,当它变成真正的 css 类时,它将不再被隐藏。
标签: javascript websocket vue.js