zoukankan      html  css  js  c++  java
  • vue学习笔记(一) ---- vue指令(v-for 和 key 属性)

    vue指令之v-forkey属性

    一、 v-for

    1. v-for遍历数组

    <div id="app">
        <h3>好饿,我好想吃~~~~</h3>
        <ul v-for="menu in list">
            <li>{{menu}}</li>
        </ul>
    </div>
    <script>
        var vm = new Vue({
            el: '#app',
            data: {
                list:['鸭血粉丝','螺蛳粉','大碗米线','黄焖鸡','地锅鸡']
            }
        })
    </script>
    

    来吧展示:

    在这里插入图片描述
    如果需要索引,则给v-for传入一个参数,index表示的是索引(名称任意取)

    <div id="app">
        <h3>好饿,我好想吃~~~~</h3>
        <ul v-for="(menu,index) in list">
            <li>安排一下啵:{{index}}--------{{menu}}</li>
        </ul>
    </div>
    

    2. v-for循环数组对象 01

    在这里插入图片描述
    传入多个对象:

    <div id="app">
        <h3>好饿,我好想吃~~~~</h3>
    <!--    <ul v-for="(menu,index) in list">-->
    <!--        <li>安排一下啵:{{index}}&#45;&#45;&#45;&#45;&#45;&#45;&#45;&#45;{{menu}}</li>-->
    <!--    </ul>-->
        <ul v-for="(menu,index) in list">
            <li>第{{menu.num}}好吃--------{{menu.name}}-------索引{{index}}</li>
        </ul>
    </div>
    <script>
        var vm = new Vue({
            el: '#app',
            data: {
                // list:['鸭血粉丝','螺蛳粉','大碗米线','黄焖鸡','地锅鸡']
                list:[
                    {num:1,name:'鸭血粉丝'},
                    {num:2,name:'螺蛳粉'},
                    {num:3,name:'大碗米线'},
                    {num:4,name:'黄焖鸡'},
                    {num:5,name:'地锅鸡'}
                ]
            }
        })
    </script>
    

    在这里插入图片描述

    2. v-for循环数组对象 02

    <div id="app">
        <ul>
            <li v-for="(val,key,i) in menu">键:{{key}} -----  值:{{val}}  ----- 索引下标:{{i}}</li>
        </ul>
    </div>
    <script>
        var vm = new Vue({
            el: '#app',
            data: {
                menu:{
                  num:1,
                  name:'小米椒爱上小公鸡',
                  message:'噢~~~这该死的美味'
              }
            }
        })
    </script>
    

    在这里插入图片描述

    3.v-for循环数值

    <p v-for="(item,i) in 10">这是数值:{{item}}-----这是索引:{{i}}</p>
    

    在这里插入图片描述

    二、key属性的使用

    通过一个案例来引入key

    <body>
    <div id="app">
        <div>
            <label>Id:
                <input type="text" v-model="num">
            </label>
            <label>Name:
                <input type="text" v-model="name">
            </label>
    
            <input type="button" value="添加" @click="add">
        </div>
        <ul>
            <li v-for="(menu,i) in list">
                <input type="checkbox"/>排名:{{menu.num}}------美味:{{menu.name}}
            </li>
        </ul>
    </div>
    <script>
        var vm = new Vue({
            el: '#app',
            data: {
                num: '',
                name: '',
                  list:[
                    {num:1,name:'鸭血粉丝'},
                    {num:2,name:'螺蛳粉'},
                    {num:3,name:'大碗米线'},
                    {num:4,name:'黄焖鸡'},
                    {num:5,name:'地锅鸡'}
                ]
            },
            methods: {
                add() { // 添加方法
                    this.list.unshift({ num: this.num, name: this.name })
                }
            }
        })
    </script>
    </body>
    
    

    来吧展示:

    在这里插入图片描述

    问题:
    当选中状态的时候取添加元素,我们发现,选中的状态自动跳到下一个input中取,并没有保持它原来的元素的状态
    原因:在默认情况下,我们从data把一个数组渲染到页面上的时候,就不会再关注这个状态了
    解决方法:
    给元素绑定一个key属性 v-bind:key="里面是唯一的标识符"
    这个状态和当前循环的数值做了一个绑定关系,所以状态会存在
    所以只要涉及到v-for循环,建议给循环的每一项都加上:key这个属性

     <li v-for="(menu,i) in list"  :key="menu.num">
    

    来吧展示:

    在这里插入图片描述

  • 相关阅读:
    Understanding Unix/Linux Programming-ls指令练习二
    Understanding Unix/Linux Programming-ls指令练习一
    Understanding Unix/Linux Programming-who指令练习
    复习自控有感——20160307
    根轨迹法的校正正目标、原理和方法
    Understanding Unix/Linux Programming-cp指令练习
    树莓派交叉编译环境在Linux下的建立
    Vue最全指令大集合————VUE
    JS实现动态瀑布流及放大切换图片效果(js案例)
    JS实现自动轮播图效果(js案例)
  • 原文地址:https://www.cnblogs.com/Chinatsu/p/13870747.html
Copyright © 2011-2022 走看看