從vue渲染想到的陣列方法
阿新 • • 發佈:2018-12-22
1 <div id="app"> 2 <ul> 3 <li v-for='item in goods'>{{item}}</li> 4 </ul> 5 6 <div>{{a}}</div> 7 8 <button v-on:click='demo'>click</button>//由於js的弱點導致的,vue無法檢測到陣列內部的變化,只能檢測到地址變化 9 </div> 10<script> 11 var vm = new Vue({ 12 el: '#app', 13 data: { 14 a: 1, 15 goods: ['aa', 'bb', 'cc', 'rrr'] 16 }, 17 methods: { 18 demo: function () { 19 this.goods=this.goods.concat(1,2,3)//改變原陣列,能重新渲染 20 this.goods.concat(1,2,3)//不改變原陣列,不能重新渲染 21 this.goods.splice(1)//splice方法能夠改變原陣列會重新渲染
Vue.set(this.goods,1,'fff')//用set方法 能夠檢測到到變化
22 } 23 } 24 }) 25 </script>
v-for指令如果渲染的物件沒有改變地址,則不會重新渲染