javascript - Bagaimanakah vue menentukan sama ada nilai tertentu dalam v-for diubah?
过去多啦不再A梦
过去多啦不再A梦 2017-06-30 09:58:49
0
2
924

Lepaskan kod dahulu, kemudian tampal terus untuk melihat kesannya

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title></title>
    <script src="//cdn.bootcss.com/vue/2.3.4/vue.min.js"></script>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        .bg {
            width: 300px;
            height: 400px;
            position: absolute;
            top: 50px;
            left: 100px;
            border: 1px solid #ccc;
        }

        .bg ul li {
            margin-bottom: 50px;
        }
    </style>
</head>
<body>
<p>
<p class="bg">
    <ul>
        <li v-for="item of list" :key="item.id">
            <h2>{{ item.name }}</h2>
            <span v-show="false">我出现了</span>
        </li>
    </ul>
</p>
<script>
const app = new Vue({
    el: '.bg',
    data () {
        return {
            list: [
                {
                    id: 0,
                    name: '李四',
                    number: 0
                },
                {
                    id: 1,
                    name: '张三',
                    number: 0
                },
                {
                    id: 2,
                    name: '王五',
                    number: 0
                },
            ]
        }
    }
})
</script>
</p>
</body>
</html>

Saya ingin memantau sama ada nombor di bawah senarai telah berubah atau lebih besar daripada nombor semasa.
Jika nombor bertukar, span di bawah h2 akan muncul. Kemudian ia hilang dalam 1 saat.

Tetapi saya tidak tahu bagaimana untuk melakukannya. (Nota: Span mana yang muncul apabila nombor berubah. Tidak semuanya muncul.)

过去多啦不再A梦
过去多啦不再A梦

membalas semua(2)
小葫芦

Bagus, anda harus menggunakan jam tangan

Sepatutnya diasingkan dan digunakan saya rasa kaedah penulisan Vue yang asal sepatutnya begini:

Vue.component('list-view', {
  props: ['item'],
  data() {
    return {
      is_show: false
    }
  },
  watch: {
    'item.number': function(newN, oldN) {
      this.is_show = newN > oldN;
    },
    is_show: function(newStatus) {
      if (newStatus) {
        setTimeout(() => this.is_show = false, 1000);
      }
    }
  },
  template: `
      <li>
        <h2 v-text="item.name"></h2>
      <span v-show="is_show">我出现了</span>
    </li>`
});

const app = new Vue({
  el: '.bg',
  data() {
    return {
      list: [{
        id: 0,
        name: '李四',
        number: 0
      }, {
        id: 1,
        name: '张三',
        number: 0
      }, {
        id: 2,
        name: '王五',
        number: 0
      }, ]
    }
  },
  mounted() {
    //测试用的
    setTimeout(() => {
      this.$set(this.list[0], 'number', 1);
    }, 1000);
    setTimeout(() => {
      this.$set(this.list[1], 'number', 1);
    }, 2000);
    setTimeout(() => {
      this.$set(this.list[2], 'number', 1);
    }, 3000);
  }
});
<p>
  <p class="bg">
    <ul>
      <list-view v-for="item in list" :item="item" :key="item.id">
      </list-view>
    </ul>
  </p>
</p>

Anda boleh pergi ke https://jsfiddle.net/1rb586dr/2/ untuk mengalaminya

曾经蜡笔没有小新

Anda boleh menggunakan watch()properties

dokumentasi api: vue-vatch

Semoga ia dapat membantu anda, jika anda masih belum faham@我

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan