javascript - vue 如何判斷v-for里的某個值發(fā)送變化
問題描述
先貼代碼,直接粘貼過去就能看效果
<!DOCTYPE html><html><head> <meta charset='UTF-8'> <title></title> <script src='https://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'>我出現(xiàn)了</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>
我想監(jiān)聽list 下面的number 是否發(fā)生變化,或者大于現(xiàn)在的number。如果number發(fā)生變化了, h2下面的span 就會出現(xiàn)。 然后 1秒消失。
但是沒想到怎么去做。 (注意: 哪個number變化就哪個span出現(xiàn)。 不是所有都出現(xiàn)。)
問題解答
回答1:不錯,應(yīng)該使用 watch
應(yīng)該分拆使用組建,我想原汁原味的Vue寫法應(yīng)該如此:
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'>我出現(xiàn)了</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>
可以到 https://jsfiddle.net/1rb586dr/2/ 體驗
回答2:你可以使用watch()屬性
api文檔:vue-vatch
希望可以幫到你,如果還不懂再@我
相關(guān)文章:
1. css - 如何使用 vue transition 實現(xiàn) ios 按鈕一樣的平滑切換效果2. docker安裝后出現(xiàn)Cannot connect to the Docker daemon.3. 給變量賦值的時候是不是也要加//4. nignx - docker內(nèi)nginx 80端口被占用5. angular.js - angular內(nèi)容過長展開收起效果6. java - EventBus 3.0 nullPoint異常?7. vim下怎么把一大段代python碼往前移動一個tab?8. javascript - 一個字符串轉(zhuǎn)換成數(shù)字,例子就是a="2,322.222",b=’1,211.21’,如何在angualr中執(zhí)行相減9. javascript - 求助這種功能有什么好點的插件?10. html - css 文件內(nèi),有的樣式?jīng)]調(diào)用, 有沒有工具刪除這部分沒調(diào)用的內(nèi)容?
