v-model經常使用於表單數據的雙向綁定,它本質上是一個語法糖。它主要的有兩種應用:css
<div id="app"> <input v-model="test"> <!-- <input :value="test" @input="test= $event.target.value"> --> <!--語法糖--> <p>{{ test}}</p> </div> <script> new Vue({ el: '#app', data: { test: '歡迎來到俠課島' } }); </script>下拉框:
<div id="app"> <select v-model="selected"> <option value="設計">Phtotshop</option> <option value="編程">programming</option> <option value="插畫">Illustration</option> </select> <span>Selected: {{ selected }}</span> </div> <script> new Vue({ el: '#app', data: { selected: '' } }); </script>單選按鈕:
<div id="app"> <input type="radio" id="man" value="男" v-model="picked"> <label for="man">男</label> <br> <input type="radio" id="woman" value="女" v-model="picked"> <label for="woman">女</label> <br> <input type="radio" id="other" value="其餘" v-model="picked"> <label for="other">其餘</label> <br> <span>Picked: {{ picked }}</span> </div> <script> new Vue({ el: '#app', data: { picked: '' } }) </script>複選框:
<div id="app"> <input type="checkbox" id="one" value="課程一e" v-model.lazy="checkedNames"> <label for="one">選項一</label> <input type="checkbox" id="two" value="課程二" v-model.lazy="checkedNames"> <label for="two">選項二</label> <input type="checkbox" id="three" value="課程三" v-model.lazy="checkedNames"> <label for="three">選項三</label> <br> <span>Checked names: {{ checkedNames }}</span> </div> <script> new Vue({ el: '#app', data: { checkedNames: [] } }) </script>
<input v-model.lazy="test" >.number,自動將用戶的輸入值轉爲數值類型
<input v-model.number="test" type="number">.trim,自動過濾用戶輸入的首尾空白字符
<input v-model.trim="test" >
格式: v-for=「字段名 in(of) 數組 or jsonhtml
<div id="main"> <p>{{ message }}</p> <ul> <li v-for="(item,index) in fruit">{{ item }} {{ index }}</li> </ul> </div> <script> new Vue({ el: '#main', data: { message: 'Welcome XKD!', fruit: [ 'Apple', 'Grape', 'Pitaya', 'Banana', 'watermelon', 'Pomegranate' ] } }) </script>
v-show
經過值來判斷是否加載並顯示;程序員
v-if
經過值來判斷是否加載;編程
v-else-if
,充當 v-if 的「else-if 塊」,能夠連續使用;json
v-else
,表示 v-if 的「else 塊」 ,必須連用,不然無效不會識別。數組
v-show 和 v-if二者區別在於:app
v-show:dom
<div v-show="isShow">我只是用來控制 display 的屬性值</div> <script> var vm = new Vue({ el: "#main", data: { isShow: true } }); </script>
v-if:ui
<div id="main"> <div v-if="isShow">顯示或隱藏</div> </div> <script> var vm = new Vue({ el: "#main", data: { isShow: fasle } }); </script>
v-else-if:spa
<div v-if="type === 'A'">程序員</div> <div v-else-if="type === 'B'">設計師</div> <div v-else-if="type === 'C'">運營者</div> <div v-else>互聯網工做人</div> <script> var vm = new Vue({ el: "#main", data: { type: 'A' } }); </script>
v-else:
<div v-if="isTrue">俠課島</div> <div v-else>仍是俠課島</div> <script> var vm = new Vue({ el: '#main', data: { isTrue: true } }) </script>
及時對頁面的數據進行更新修改。
指令綁定事件後,就會監聽相應的事件。
v-on:click:
<div id="main"> <h3>已點擊 {{count}} 次</h3> <button @click="count++">Click Me!</button> </div> <script> var vm = new Vue({ el: '#main', data: { count: 0 } }); </script>
v-on:keyup:先顯示值,再彈出層
<div id="main"> <input v-on:keyup.13="keyup" type="text"> </div> <script> var vm = new Vue({ el: '#main', data: { }, methods: { // enterClick: function () { // console.log("enterClick"); // } keyup(e) { alert(JSON.stringify(e)); } } }); </script>
v-on:keydown:在框中輸入先彈出層,再顯示輸入的值
<div id="main"> <input v-on:keydown="keydown"> </div> <script> var vm = new Vue({ el: '#main', data: { }, methods: { keydown(e) { alert(JSON.stringify(e)); } } }); </script>
v-text:
<span v-text="dangerHTML"></span> dangerHTML: '<span onclick="alert(123)">123</span>'
無論是什麼,全都解析成文本,裏面的HTML標籤也所有轉義掉:
v-html:
<span v-html="dangerHTML"></span> dangerHTML: '<span onclick="alert(123)">123</span>'
{ red:ifAbledRed }
ifAbledRed ? "red" : "blue"
[{red:"ifAbledRed"},{blue:"ifAbledBlue"}]
只渲染一次,再也不進行渲染。
<p v-once>{{ message }}</p>
v-cloak通常是配合 [v-cloak] {display: none; }css 一塊兒使用的。
<p v-cloak>{{ message }}</p>
下面是一個閃爍的截圖代碼,當咱們給以下紅色代碼塊外加一個setTimeout時間延遲時,而後再去執行咱們會發如今網頁上什麼都沒有,會有一個時間的停留,所以提供了一個v-cloak的方法來解決這個問題。
原位輸出標籤內部的元素。