Vue指令:v-for的用法;v-bind绑定class的几种写法;tab标签切换

 一、v-for 的用法

   循环指令,可以遍历 Number、String、Object、Array;

  • 循环数字、字符串:有2个参数,分别是value和索引值;
  • 循环对象:有3个参数,分别是 属性值、属性名、索引值;

  • 循环数组对象:有2个参数,分别是 对象和索引值;
  • 索引值和属性名可以省略不写。

 1 <h4>遍历数字:</h4>
 2 <div v-for="(value,idx) in forData1">
 3      <span>值{{value}} --- 索引值{{idx}}</span>
 4 </div>
 5 <h4>遍历字符串:</h4>
 6 <div v-for="(value,idx) in forData2">
 7      <span>值{{value}} --- 索引值{{idx}}</span>
 8 </div>
 9 <h4>遍历对象:</h4>
10 <div v-for="(item,key,idx) in forData3">
11      <span>属性值{{item}} --- 属性名{{key}} --- 索引值{{idx}}</span>
12 </div>
13 <h4>遍历数组对象(嵌套循环):</h4>
14 <div v-for="(item,idx) in forData4" >
15      <span>对象{{item}} --- 索引值{{idx}}</span>
16      <div v-for="(i,key) in item">
17         <span>{{i}}---{{key}}</span>
18      </div>
19 </div>
20 
21 new Vue({
22     el: '#app',
23     data: {
24         forData1:3,
25         forData2:'abcd',
26         forData3:{name:'xixi',age:18},
27         forData4:[{name:'张飞',age:38},{name:'武松',age:48}]
28     }
29 })

运行结果:       

 

 二、v-bind绑定class的几种写法

  绑定属性;

  缩写: v-bind:class=" "  --->  :class=" "

  1. 常见写法   

<div :class="classA"></div>

  2. 数组语法   

<div :class="[classA,classB]"></div>

  3. 对象语法(绑定布尔值、属性,当判断条件比较复杂可以绑定方法) 

<div :class="{'redFont':true,'blueBorder':ifhasBorder,'bigSize':changeSize()}"></div>

  vue实例化配置:   

<script src="./vue.js"></script>
<script>
      var vm = new Vue({
         el: '#app',
         data: {
            classA:'redFont',
            classB:'blueBorder',
            ifhasBorder:false
         },
         methods:{
              changeSize:function(){
                  return false;
              }
         }
      })
</script>    

 

运行结果:   

 

 三、简单应用:tab标签切换

   结合 v-for 、v-bind 以及 v-show 指令,实现简单的tab标签和内容同步切换,(样式引用bootstrap.css)。

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <meta http-equiv="X-UA-Compatible" content="ie=edge">
   <title>Document</title>
   <link rel="stylesheet" href="./bootstrap.css">
</head>
<body>
   <div id="app">
      <ul class="nav nav-tabs">
         <li class="nav-item" v-for="(item,idx) in tabs">
            <a :class="{'nav-link':true,active:idx===activeIndex}" href="#" @click="changeIdx(idx)">{{item}}</a>
         </li>
      </ul>
      <div v-for="(item,idx) in contents">
         <div v-show="idx===activeIndex" style="padding:10px;">{{item}}</div>
      </div>
   </div>
   <script src="./vue.js"></script>
   <script>
      var vm = new Vue({
         el: '#app',
         data: {
            tabs: ["水果", "玩具", "人名"],
            contents: ['西瓜葡萄大苹果', '积木拼图小火车', '大雄小熊小小明'],
            activeIndex:0
         },
         methods:{
            changeIdx:function(idx){
               this.activeIndex = idx;
            }
         }
      })
   </script>
</body>
</html>

 运行结果:  

 

posted on 2019-05-06 13:52  anyxl  阅读(3658)  评论(0编辑  收藏  举报