1. 程式人生 > 實用技巧 >VueDay03列表渲染迴圈渲染以及key的使用

VueDay03列表渲染迴圈渲染以及key的使用

Vue列表渲染,v-for的使用

①v-for="item in stars

②v-for="item,key in students

③v-for="item,key in students[0]

程式碼如下:



<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
        <script src="js/vue.js" type="text/javascript" charset="utf-8"
></script> </head> <body> <div id="app"> <h3>明星列表</h3> <ul> <li v-for="item in stars"> {{item}} </li> </ul> <h3>學生列表</
h3> <ul> <li v-for="item in students"> <h4>{{item.studentName}}</h4> <p>年齡:{{item.age}}---學校:{{item.school}}</p> </li> </ul> <h3>學生列表(帶索引值)</
h3> <ul> <li v-for="item,key in students"> <h4>索引值:{{key}}{{item.studentName}}</h4> <p>年齡:{{item.age}}---學校:{{item.school}}</p> </li> </ul> <h3>迴圈物件</h3> <ul> <li v-for="item,key in students[0]">key:{{key}}----value:{{item}}</li> </ul> <!-- :src中的冒號是繫結的意思 全稱是v-bind: --> <img :src="students[0].imgheader" > <h3>條件+迴圈渲染(將偶數年齡的學生渲染)</h3> <!-- 先迴圈再判斷 --> <ol> <li v-for="item,index in students" v-if="item.age%2==0" :key="index"> <h4>索引值:{{index}}{{item.studentName}}</h4> <p>年齡:{{item.age}}---學校:{{item.school}}</p> </li> </ol> </div> <script type="text/javascript"> var app =new Vue({ el:"#app", data:{ stars:["蔡徐坤","蘇有朋","范冰冰","李晨"], students:[ { studentName:"小明", age:16, school:"清華", imgheader:"https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=2369017631,3935728806&fm=26&gp=0.jpg" }, { studentName:"小黑", age:17, school:"北大" }, { studentName:"小紅", age:18, school:"浙大" }, { studentName:"小紅", age:15, school:"浙大" } ] } }) </script> </body> </html>



迴圈渲染,v-for="todo in todos:



<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <script src="js/vue.js" type="text/javascript"></script>
    </head>
    <body>
        <div id="app-4">
            <ol>
                <li v-for="todo in todos">
                    {{todo.text}}
                </li>
            </ol>
        </div>
        <script type="text/javascript">
            var app4 = new Vue({
                el:'#app-4',
                data:{
                    todos:[
                        {text:"學習 Javascript"},
                        {text:"學習 Vue"},
                        {text:"整個牛專案"}
                    ]
                }
            })
        </script>
        <!-- 在控制檯裡,輸入 app4.todos.push({ text: '新專案' }),會發現列表最後添加了一個新專案。 -->
    </body>
</html>



 

key的使用,避免了複用現象,不加key區別的話,在相同的標籤下輸入的值會停留在輸入框內:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
        <div id="app">
            <div v-if="isLogin" class="login" >
                <h3>登入</h3>
                
                    使用者名稱:
                    <input type="text" name="username" key="login"  />
                
                    
                    密碼:
                    <input type="password" name="password"  />
                
                <button type="button">登入</button>
            </div>
            <div v-else class="register" >
                <h3>註冊</h3>
                
                    使用者名稱:
                    <input type="text" name="username"  key="register" />
                
                
                    
                    密碼:
                    <input type="password" name="password"   />
                
                <button type="button">註冊</button>
            </div>
            <button @click="togglePage" type="button">切換登入註冊頁</button>
            <script src="js/vue.js" ></script>
            <script type="text/javascript">
                let app = new Vue({
                    el:"#app",
                    data:{
                        isLogin:true
                    },
                    methods:{
                        togglePage:()=>{
                            app.isLogin = !app.isLogin;
                        }
                    }
                })
            </script>
        </div>
    </body>
</html>