1. 程式人生 > 實用技巧 >Vue v-指令相關

Vue v-指令相關

1.v-text 設定標籤的內容

 var app=new Vue({
            el:"#app",
            data:{
                message:"ksjghksjgb!!!!!!",
                info:"可就是不公開錦標賽的"
            }
        })
<h2 v-text="message"></h2>
<h2 v-text="info"></h2>
<h2>{{ message}}</h2>

這裡需要注意的是字串的拼接,在使用v-text時

<h2 v-text="message">這是文字</h2>

這種的插入是沒有效果的,而使用{{}}卻是可以的

<h2>{{ message}}這是文字</h2>

另外在內部進行拼接,即使用''單引號是都能實現的

 <h2 v-text="message+'梳理客戶給'"></h2>
    <h2 v-text="info+'sldhgf'"></h2>
    <h2>{{ message+'skdlng'}}</h2>

2.v-html 設定元素的innerHTML

<p v-html="text"></p>
<p v-text="text"></p>

  data:{
              // text:"百度",
                text:"<a href='http://www.baidu.com'>百度</a>"
            }
或變為陣列

data:{
  ima:[
"./img/img0.png",
"./img/img1.png",
"./img/img2.png",
"./img/img3.png",
],


當text只是簡單的文字的時候,v-html和v-text均只顯示文字,但是當text是<a>標籤的時候,v-html就成為了html

3.v-on 為元素繫結事件

Vue提供了可以使用@符號來代替v-on:的方法

<input type="button" value="單擊事件" v-on:click="dova">
<input type="button" value="雙擊事件" v-on:dblclick="dova">
<input type="button" value="簡寫" @click="dova">

 dova:function () {
                    alert("做!!!!");
                },

注意當使用點選方法 :function時

add:function (){}

需要用this.來代指當前指定的元素

<p @click="changeFood" v-text="food"></p>
 data:{
      food:"雞蛋"
    },
 changeFood:function () {
        this.food="好吃"
      }

v-on還提供函式呼叫方式的資料繫結,並可以傳入自定義引數

以下是官方文件的示例

<div id="app">
  <button v-on:click="counter += 1">Add 1</button>
  <p>The button above has been clicked {{ counter }} times.</p>
</div>
var example1 = new Vue({
  el: '#app',
  data: {
    counter: 0
  }
})

可以看到v-on:click="counter += 1"就是直接呼叫的函式方法

v-on還可以接收呼叫的方法

     greet: function (event) {
       alert( this.name + '!')  //使用this
       if (event) {
         alert(event.target.tagName)  //輸出event的dom元素是何種型別
       }
     }

v-on內聯Javascript語句,這裡也使用官方示例

<div id="example-3">
  <button v-on:click="say('hi')">Say hi</button>    
  <button v-on:click="say('what')">Say what</button>
</div>
new Vue({
  el: '#example-3',
  methods: {
    say: function (message) {
      alert(message)
    }
  }
})

點選按鈕可以發現只輸出了()內的內容

v-on還提供了按鍵修飾符屬性

<input type="text" @keyup.esc="hi">
hi:function (){
       alert("sdfsfsdf");
     }

這裡使用@keyup來表明鍵盤事件,用 . 來連線具體的按鍵常用的有

  • .enter 或者.13
  • .tab
  • .delete(捕獲“刪除”和“退格”鍵)
  • .esc
  • .space
  • .up
  • .down
  • .left
  • .right

此外還提供了系統修飾鍵

 <input type="text" @keyup.alt.67="hi">  //Alt+c
  <div @click.ctrl="hi">Do something</div>    //Ctrl+Click

即按住 alt 鍵加c才能觸發@keyup 或者按住ctrl再點選才能觸發

.67就表示的是C鍵的keycode

這裡貼出一個查詢網址,可以用來查詢按鍵的keycode http://keycode.info/

常用的修飾符按鍵有

  • .ctrl
  • .alt
  • .shift
  • .meta

4.v-show 根據真假控制頁面元素顯示狀態(ture顯示,false隱藏)

有三種方式控制

(1)直接控制

<img src="img/die.jpg" v-show="true">

(2)方法控制

<input type="button" value="切換" @click="changeshow">
<img src="img/die.jpg" v-show="isshow">
methods:{
     changeshow:function (){
     this.isshow=!this.isshow;
     }

(3)條件控制

<img src="img/die.jpg" v-show="age>=20">
<input type="button" value="條件控制" @click="changeAge" >
data:{
     isshow:false,
  age:15
},
  methods:{
     changeAge:function (){
       this.age++;
     }

5.v-if 根據表示式的真假,切換元素的顯示與隱藏,與v-show不同,它是直接操縱dom元素

使用方法和v-show相似,只是後臺操作元素方法不同,

v-show是隱藏掉,v-if是直接註釋掉程式碼

頻繁操作的元素使用v-show,反之使用v-if

6.v-bind 為元素繫結屬性 可以簡寫 使用:。例::class、:src等

整個流程圖從@click點選事件開始。點選圖片,呼叫isNo方法,可以改變預設為false的isActive的值,當isActive的值為true時,class=“active”,然後.active生效,出現邊框

注意 這裡v-bland:class="isActive? ' active ':' ' " 理解為 isActive是true則class=“active” 否則為“” 使用的是三元運算子

另一種方法是使用物件的形式 v-bland:class=“{active:isActive}” 理解為 active這個類是否生效取決於isActive的值 建議使用這種方式

7.v-for 根據資料生成列表結構,響應式的更新

(item,index)in 資料 item代表每一項,index表示索引,in不能更改

 <ul>
    <li v-for="(item,index) in band">  //item可以改變,index表示索引數字,從0開始
      {{item}}賽車{{index}}       //跟上方的item對應即可
    </li>
  </ul> 
  <p v-for="item in gas">{{item.name}}</p> //輸出name
  <p v-for="item in gas" :title="item.name">{{item.name}}</p>
var app=new Vue({
  el:"#app",
  data:{
    band:["F1","F2","F3","F4","F5"],
    gas:[
      {name:"90號汽油"},
      {name:"91號汽油"},
      {name:"92號汽油"},
    ]
  },
methods:{
    add:function (){
      this.gas.push({name:"93號汽油"})  //為陣列中新增元素此處固定
    },
    remove:function (){   //移除陣列中的元素,預設是從左移除
      this.gas.shift();
    }
}