【发布时间】:2017-12-25 07:59:07
【问题描述】:
我在 JS/Vue 中有一个数组,我想在 <ul>/<li> 标签中显示它,并随着数组获得新元素而保持更新。
HTML:
<ul id="ulist">
<li v-for="user in users">
@{{ user }} <!-- "@" needed since this is in a laravel project with blade templates -->
</li>
</ul>
JS:
<script>
var socket = io('localhost:3000');
new Vue({
el: "#ulist",
data: {
users: []
},
mounted: function() {
this.$nextTick(function() {
socket.on('test-action', function(data) {
this.users.push(data.username);
console.log(data.username);
}.bind(this));
});
}
});
</script>
数组已正确填充(我可以通过 console.log 语句看到),但 <li v-for="user in users">... 部分似乎没有工作,因为没有创建任何 <li>...</li> 元素。我在这里做错了什么?
澄清一下:如果我将硬编码值添加到 users 数组,这些值会很好地显示在 <li> 元素中,但添加到数组中的其他值(在 mounted 函数中)不会显示在<li>...</li> 元素。
编辑:版本是 2.5.13,如果重要的话
【问题讨论】:
-
在处理数组更改时,您有时必须像这样设置值:vuejs.org/v2/guide/reactivity.html#Change-Detection-Caveats
标签: javascript laravel vue.js vuejs2