【发布时间】:2017-08-31 03:59:18
【问题描述】:
我在将 socket.io 数据传递给 vuejs 元素时遇到问题。我浏览了几次 Vue 文档,但找不到解决方案。基本上,我有一个通过 socket.io 发送到客户端的数据,console.log 完美地打印出来。现在我想使用 Vue 来渲染带有该数据的 html 元素,但是我在将我的 socket.io 数据传递给它时遇到了问题。
在 Vue 文档中有一个如何使用静态数据输入的示例。
var example1 = new Vue({
el: '#example-1',
data: {
items: [
{ message: 'Foo' },
{ message: 'Bar' }
]
}
})
所以我发现我需要为此将我的数据对象转换为字符串。我为此使用了 JSON.stringify()。
var socket = io.connect('http://192.168.1.10');
socket.on('posts', function (datasocket) {
var st = JSON.stringify(datasocket);
var blogposts = new Vue({
el: '#blogpost',
data: {
items: st
}
})
});
HTML
<div id="blogpost">
<div v-for="item in items" class="card" style="width: 20rem;">
<div class="card-block">
<h4 class="card-title">{{ item.post_title }}</h4>
<p class="card-text">{{ item.post_excerpt }}</p>
<a href="{{ item.post_link }}" class="btn btn-primary">Go somewhere</a>
</div>
</div>
</div>
然而,Vue 似乎没有渲染任何东西。在我的控制台中,当我在 st 上执行 console.log 时,我得到了输出:
{"content":[{"post_title":"Post title 1","post_excerpt":"Post excerpt 1","post_link":"/post/1"},{"post_title":"Post title 2","post_excerpt":"Post excerpt 2","post_link":"/post/2"},{"post_title":"Post title 3","post_excerpt":"Post excerpt 2","post_link":"/post/3"}]}
那么知道如何正确地将这些数据传递给 VueJS 吗?
【问题讨论】:
标签: javascript node.js socket.io vue.js