亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

列表渲染 Vue2.0與Vue1.0的區別

發布時間:2020-07-08 08:10:35 來源:網絡 閱讀:2983 作者:frwupeng517 欄目:開發技術

v-for:  v-for 指令需要以 item in items 形式的特殊語法, items 是源數據數組并且 item 是數組元素迭代的別名。


基本用法:

<div id="app">
    <ul>
        <li v-for="item in arr">`item`</li>
    </ul>
</div>
new Vue({
    el:'#app',
    data:{
        arr:['apple','banana','cherry','durain']
    }
})

列表渲染  Vue2.0與Vue1.0的區別

這種寫法類似Javascript種的關聯數組,key 和 value,item就相當于數組的value。那數組的下標是否也能打出來呢?

<div id="app">
    <ul>
        <li v-for="item in arr">{{$index}} `item`</li>
    </ul>
</div>

列表渲染  Vue2.0與Vue1.0的區別

同理,如果是對于一個對象呢?

<div id="app">
    <ul>
        <li v-for="item in obj">{{$index}} {{$key}} `item`</li>
    </ul>
</div>
new Vue({
    el:'#app',
    data:{
        obj:{'a':'apple','b':'banana','c':'cherry'}
    }
})

列表渲染  Vue2.0與Vue1.0的區別

一樣可以取到對應的下標,key值和value值


那如果在頁面上有一個按鈕,點擊一下就添加一個列表項出來怎么實現呢?

<div id="app">
    <button @click="add">添加</button>
    <button @click="delete">刪除</button>
    <ul>
        <li v-for="item in arr">{{$index}} `item`</li>
    </ul>
</div>
new Vue({
    el:'#app',
    data:{
        arr:['apple','banana','cherry','durain']
    },
    methods:{
        add:function(){
            this.arr.push('watermelon')
        },
        delete:function(){
            this.arr.splice(0,1)
        }
    }
})

點擊添加按鈕的時候,在數組的末尾添加一個子項;點擊刪除按鈕的時候,把數組的第一項刪掉

列表渲染  Vue2.0與Vue1.0的區別 列表渲染  Vue2.0與Vue1.0的區別

我們用 v-for 指令根據一組數組的選項列表進行渲染。 v-for 指令需要以 item in items 形式的特殊語法, items 是源數據數組并且 item 是數組元素迭代的別名。


在 v-for 塊中,我們擁有對父作用域屬性的完全訪問權限。 v-for 還支持一個可選的第二個參數為當前項的索引。

<ul id="app">
    <li v-for="(item,index) in items" class="item-{{$index}}">{{$index}}-`parentMsg` `item`.`msg`</li>
</ul>

<script src="resources/js/vue.js"></script>
<script>
new Vue({
    el:'#app',
    data:{
        parentMsg:'滴滴',
        items:[
            {msg:'順風車'},
            {msg:'專車'},
            {msg:'特斯拉'}
        ]
    }
})
</script>

列表渲染  Vue2.0與Vue1.0的區別


Vue.js 1.0.17及以后版本支持of分隔符,更接近 JavaScript 遍歷器的語法: 

<div v-for="item of items"></div>


Template v-for

如同 v-if 模板,你也可以用帶有 v-for 的 <template> 標簽來渲染多個元素塊

<ul id="app">
    <template v-for="item in items">
        <li>`item`.`msg`</li>
    </template>
</ul>

<script src="resources/js/vue.js"></script>
<script>
    new Vue({
        el:'#app',
        data:{
            parentMsg:'滴滴',
            items:[
                {msg:'順風車'},
                {msg:'專車'},
                {msg:'特斯拉'}
            ]
        }
    })
</script>

列表渲染  Vue2.0與Vue1.0的區別


對象迭代 v-for

也可以用 v-for 通過一個對象的屬性來迭代

<ul id="app">
    <li v-for="value in object">`value`</li>
</ul>

<script src="resources/js/vue.js"></script>
<script>
new Vue({
    el:'#app',
    data:{
        object:{
            uname:'Roger Wu',
            uage:26,
            country:'China'
        }
    }
})
</script>

列表渲染  Vue2.0與Vue1.0的區別

也可以提供第二個參數,鍵值:

<ul id="app">
    <li v-for="(key,value) in object">`key`: `value`</li>
</ul>

<script src="resources/js/vue.js"></script>
<script>
new Vue({
    el:'#app',
    data:{
        object:{
            uname:'Roger Wu',
            uage:26,
            country:'China'
        }
    }
})
</script>

列表渲染  Vue2.0與Vue1.0的區別


也可以提供第三個參數,索引值:

<ul id="app">
    <li v-for="(index,key,value) in object">{{$index}}-`key`: `value`</li>
</ul>


在遍歷對象時,是按 Object.keys() 的結果遍歷,但是不能保證它的結果在不同的 JavaScript 引擎下是一致的。


整數迭代 v-for

v-for 也可以取整數。在這種情況下,它將重復多次模板。

<div id="demo">
    <span v-for="n in 10">`n`</span>
</div>

<script src="resources/js/vue.js"></script>
<script>
var vm2 = new Vue({
   el:'#demo'
})
</script>

列表渲染  Vue2.0與Vue1.0的區別


Vue1.0版本

重復數據的渲染 track-by

前面所有的例子中,同一個數組中都沒有重復內容,那如果數組中出現重復內容的話,是否還能正常渲染呢?


代碼示例如下:

<div id="app">
    <button @click="add">添加</button>
    <ul>
        <li v-for="item in items">`item`</li>
    </ul>
</div>

<script src="http://cdn.bootcss.com/vue/1.0.26/vue.js"></script>
<script>
    var vm =new Vue({
        el:'#app',
        data:{
            items:['Tom','Marry','Jim']
        },
        methods:{
            add:function(){
                return this.items.push('Roger')
            }
        }
    })
</script>


點擊按鈕時,往數組中添加一個新的元素,這個一點問題也沒有。問題是,頁面渲染出新的元素‘Roger’以后,你再點這個按鈕,控制臺報錯了。

列表渲染  Vue2.0與Vue1.0的區別


數組中發現了重復元素,如果想要添加重復元素的話,可以使用 track-by="$index/uid" (可以是索引,也可以是數據庫中的id 值)


修改示例代碼如下:

<div id="app">
    <button @click="add">添加</button>
    <ul>
        <li v-for="item in items" track-by="$index">`item`</li>
    </ul>
</div>

<script src="http://cdn.bootcss.com/vue/1.0.26/vue.js"></script>
<script>
    var vm =new Vue({
        el:'#app',
        data:{
            items:['Tom','Marry','Jim']
        },
        methods:{
            add:function(){
                return this.items.push('Roger')
            }
        }
    })
</script>


再來看效果,完美解決

列表渲染  Vue2.0與Vue1.0的區別


Vue 2.0版本

相比Vue 1.0 版本,Vue2.0 在列表渲染方面主要有以下幾個改變:


1、允許數組重復元素

還是上面的例子,我們引入一個Vue2.0 的js文件

<div id="app">
    <button @click="add">添加</button>
    <ul>
        <li v-for="item in items">`item`</li>
    </ul>
</div>

<script src="http://cdn.bootcss.com/vue/2.0.8/vue.js"></script>
<script>
    var vm =new Vue({
        el:'#app',
        data:{
            items:['Tom','Marry','Jim']
        },
        methods:{
            add:function(){
                return this.items.push('Roger')
            }
        }
    })
</script>


沒有 track-by,把vue文件換成了2.0版本,效果可見下圖,隨意添加重復元素

列表渲染  Vue2.0與Vue1.0的區別



2、去掉了一些隱式變量 $index, $key

如果想要獲取數組或對象元素的下標可以用  v-for="(val,index) in array"


先看Vue1.0版本的代碼示例:

<div id="app">
    <ul>
        <li v-for="item in items">{{$index}}-`item`</li>
    </ul>
</div>

<!--Vue1.0-->
<script src="http://cdn.bootcss.com/vue/1.0.18/vue.js"></script>
<script>
    var vm = new Vue({
        el:'#app',
        data:{
            items:['Apple','Hua Wei','Oppo','Vivo']
        }
    })
</script>


使用 $index 來獲取數組下標,一點問題也沒有:

列表渲染  Vue2.0與Vue1.0的區別



再看Vue2.0版本的代碼示例:

<div id="app">
    <ul>
        <li v-for="item in items">{{$index}}-`item`</li>
    </ul>
</div>

<!--Vue2.0-->
<script src="http://cdn.bootcss.com/vue/2.0.8/vue.js"></script>
<script>
    var vm = new Vue({
        el:'#app',
        data:{
            items:['Apple','Hua Wei','Oppo','Vivo']
        }
    })
</script>


報錯了,說 $index在 實例中沒有定義

列表渲染  Vue2.0與Vue1.0的區別


我們剛才已經指出了 1.0版本 和 2.0版本的區別,現在不妨試一試

<div id="app">
    <ul>
        <li v-for="(item,index) in items">`index`-`item`</li>
    </ul>
</div>

<!--Vue2.0-->
<script src="http://cdn.bootcss.com/vue/2.0.8/vue.js"></script>
<script>
    var vm = new Vue({
        el:'#app',
        data:{
            items:['Apple','Hua Wei','Oppo','Vivo']
        }
    })
</script>


查看效果,完美解決

列表渲染  Vue2.0與Vue1.0的區別



再來看一個關于 $key的例子

Vue1.0版本

<div id="app">
    <ul>
        <li v-for="value in items">{{$key}} - `value`</li>
    </ul>
</div>

<script src="http://cdn.bootcss.com/vue/1.0.26/vue.js"></script>
<script>
    var vm = new Vue({
        el:'#app',
        data:{
            items:{
                name:'Roger',
                age:26,
                gender:'male'
            }
        }
    })
</script>

列表渲染  Vue2.0與Vue1.0的區別


Vue2.0版本

使用 $key:

<div id="app">
    <ul>
        <li v-for="value in items">{{$key}} - `value`</li>
    </ul>
</div>

<script src="http://cdn.bootcss.com/vue/2.0.8/vue.js"></script>
<script>
    var vm = new Vue({
        el:'#app',
        data:{
            items:{
                name:'Roger',
                age:26,
                gender:'male'
            }
        }
    })
</script>


報錯了,$key 未定義

列表渲染  Vue2.0與Vue1.0的區別


使用 v-for="(item,key) in items":

<div id="app">
    <ul>
        <li v-for="(value,key) in items">`key` - `value`</li>
    </ul>
</div>

<script src="http://cdn.bootcss.com/vue/2.0.8/vue.js"></script>
<script>
    var vm = new Vue({
        el:'#app',
        data:{
            items:{
                name:'Roger',
                age:26,
                gender:'male'
            }
        }
    })
</script>


頁面渲染截圖:

列表渲染  Vue2.0與Vue1.0的區別


3、track-by="$index/uid" 變成 <li v-for="(val,index) in list" :key="index">

在Vue1.0 中,track-by 除了可以讓數組添加重復元素以外,還有很大一個作用就是提升循環的性能

在Vue2.0中,數組重復元素已經不是問題了,性能提升這塊還是有必要的


<div id="app">
    <ul>
        <li v-for="(item,index) in items" :key="index">`index`-`item`</li>
    </ul>
</div>

<!--Vue2.0-->
<script src="http://cdn.bootcss.com/vue/2.0.8/vue.js"></script>
<script>
    var vm = new Vue({
        el:'#app',
        data:{
            items:['Apple','Hua Wei','Oppo','Vivo']
        }
    })
</script>


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

浪卡子县| 嘉禾县| 尉犁县| 枞阳县| 莆田市| 正镶白旗| 襄汾县| 广南县| 定南县| 清河县| 临高县| 长沙市| 巴楚县| 华容县| 沙雅县| 巢湖市| 蒙山县| 房产| 溧水县| 蒙自县| 景泰县| 大安市| 远安县| 郯城县| 共和县| 油尖旺区| 东光县| 温宿县| 徐闻县| 鹤壁市| 龙口市| 柳河县| 大名县| 酒泉市| 黑山县| 吴忠市| 内黄县| 佛教| 吉安县| 天峨县| 大港区|