javascript - 在vuejs中渲染具有重复值的数组

标签 javascript vue.js

new Vue({
  el: "#chat",
  data: {
    messages: [],
    message: ''
  },
  methods: {
    add: function(e) {
      e.preventDefault();
      this.messages.push(this.message);
    }
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/1.0.24/vue.min.js"></script>
<form id="chat">
  <ul id='message'>
    <li v-for="msg in messages">{{msg}}</li>
  </ul>

  <input v-model="message">
  <button v-on:click="add">add</button>
</form>

运行代码后,如果我添加重复的数据,Vue 只会在最后显示一次该值。

例如。 类型:

  • abc
  • 一个
  • abc

显示:

  • 一个
  • abc

如果我重构并使用对象来代替主值,那么如果它们有重复的对象,它就会按预期工作。

jsfiddle

最佳答案

您需要使用track-by="$index"。 (manual)

new Vue({
  el: "#chat",
  data: {
    messages: [],
    message: ''
  },
  methods: {
    add: function(e) {
      e.preventDefault();
      this.messages.push(this.message);
    }
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/1.0.24/vue.min.js"></script>
<form id="chat">
  <ul id='message'>
    <li v-for="msg in messages" track-by="$index">{{msg}}</li>
  </ul>

  <input v-model="message">
  <button v-on:click="add">add</button>
</form>

关于javascript - 在vuejs中渲染具有重复值的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37246686/

相关文章:

vue.js - 在 Vue-Vite 中启用 sourcemaps

javascript - Bootstrap 行类每个第三个元素与 vue 模板

javascript - 如何创建自定义、可共享的协作 map ?

javascript - Angular 表达式不显示值

javascript - Slick.js 轮播空间太大和滑动问题

javascript - Nuxt + Vuex - 如何将 Vuex 模块分解为单独的文件?

javascript - vuejs如何动态改变对象中的数据

laravel - 如何在 Inertia.js 中操作浏览器 url?

javascript - 加载完成事件后的 jQuery

javascript - Chrome 中的 dispatchEvent 但 IE11 中没有