Search code examples
javascriptvue.jsvuejs2

How to change the two switch data with click with Vuejs


Please can someone teach me the method to swap two different data on click

For example, we have a data

data() {
        return {

          data_one: [
            {
              name: "Simo",
              age: "32"
            }
          ],

          data_two: [
            {
              name: "Lisa",
              age: "25"
            }
          ],

        }
      },

then I want to put this data on v-for, and I want to add two buttons to swap from data_one and data_two and display data_one as default.

<button @click="change_to_data_one">Data 1<button>
<button @click="change_to_data_two">Data 2<button>

<li v-for="item in data_one">{{item.name}} - {{item.age}}<li>

Solution

  • Try to use computed property:

    new Vue({
      el: "#demo",
      data() {
        return {
          data_one: [{name: "Simo", age: "32"}],
          data_two: [{name: "Lisa", age: "25"}],
          selected: "data_one"
        }
      },
      computed: {
        showData(){
          return this[this.selected]
        }
      },
      methods: {
        swap(val) {
          this.selected = val
        }
      }
    })
    <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
    <div id="demo">
      <button @click="swap('data_one')">Data 1</button>
      <button @click="swap('data_two')">Data 2</button>
      <ul>
        <li v-for="(item, i) in showData" :key="i">{{item.name}} - {{item.age}}</li>
      </ul>
    </div>