首页 > 其他 > 详细

Vue - v-for 的延伸用法

时间:2018-12-21 19:03:38      阅读:173      评论:0      收藏:0      [点我收藏+]

1.v-for 合并标签template 一起使用

2.vue.set

1.v-for 合并标签template 一起使用

之前在设计table的时候,如果使用v-for ,会直接放在tr里面,一次产生一行tr,

但是如果一次要产生两行以上的tr,就可以考虑使用<template>

template 这个标签不会直接输出,使用方法如下

<h4>Template 的運用</h4>
<p>請將兩個 tr 一組使用 v-for</p>
<table class="table">
  <template v-for="item in arrayData">
    <tr>
      <td>{{item.age}}</td>
    </tr>
    <tr>
      <td>{{item.name}}</td>
    </tr>
  </template>
</table>

<script>
var vm = new Vue({
el: #app,
data: {
    arrayData: [{
        name: 小明,
        age: 16
    }, {
        name: 漂亮阿姨,
        age: 24
    }, {
        name: 杰倫,
        age: 20
    }],
    
}
});

</script>

2.vue.set

<h4>vue.set介紹</h4>
<button class="btn btn-outline-primary" v-on:click="modifyArrayItem">修改陣列Index:0的內容</button>
<ul>
    <li v-for="(item, key) in arrayData" :key="item.age">
        {{ key }} - {{ item.name }} {{ item.age }} 歲 <input type="text">
    </li>
</ul>
<script>
var vm = new Vue({
el: #app,
data: {
    arrayData: [{
        name: 小明,
        age: 16
    }, {
        name: 漂亮阿姨,
        age: 24
    }, {
        name: 杰倫,
        age: 20
    }],    
},
methods: {
modifyArrayItem: function() {

// 方法1
// vm.arrayData[0] = {
//     name: ‘阿強‘,
//     age: 99
// }    
/* 
 這樣不是真正改掉畫面上陣列Index=0的資料
 因為這個寫法是把vm.arrayData[0] 指到另外一個新的物件,
 而新的物件並沒有在Vue的監控之下,所以即使陣列內的值已經改變了,
 畫面上顯示的資料並不會被喧染上去
*/

// 方法2 透過屬性去改陣列Index=0 這個物件的屬性,可以修改成功
// vm.arrayData[0].name = ‘阿強‘;
// vm.arrayData[0].age = 100;

/*
使用 Vue.set(object, key, value)
一樣是把vm.arrayData[0] 指到另外一個新的物件,
並且把這個新的物件加入Vue的監控,因此修改後,
畫面上的資料也會跟著被喧染
*/
Vue.set(vm.arrayData, 0, {
    name: 阿強,
    age: 99
});
}        
}
});

 

Vue - v-for 的延伸用法

原文:https://www.cnblogs.com/wwwblender-3dcn/p/10158412.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!