1. 文本插值:{{ }} Mustache
1 <div id="app"> 2 {{ message }} 3 </div>
2. DOM屬性綁定: v-bind
1 <div id="app-2"> 2 <span v-bind:title="message"> 3 鼠標懸停幾秒鍾查看此處動態綁定的提示信息! 4 </span> 5 </div>
3. 指令綁定一個事件監聽器:v-on
1 <div id="app-5"> 2 <p>{{ message }}</p> 3 <button v-on:click="reverseMessage">逆轉消息</button> 4 </div>
4. 實現表單輸入和應用狀態之間的雙向綁定:v-model
1 <div id="app-6"> 2 <p>{{ message }}</p> 3 <input v-model="message"> 4 </div>
5. 控制切換一個元素的顯示:v-if 和 v-else
1 <div id="app-3"> 2 <p v-if="seen">現在你看到我了</p> 3 </div>
6. 列表渲染:v-for
1 <div id="app-4"> 2 <ol> 3 <li v-for="todo in todos"> 4 {{ todo.text }} 5 </li> 6 </ol> 7 </div>
1 var app4 = new Vue({ 2 el: '#app-4', 3 data: { 4 todos: [ 5 { text: '學習 JavaScript' }, 6 { text: '學習 Vue' }, 7 { text: '整個牛項目' } 8 ] 9 } 10 })
用 v-for
把一個數組對應為一組元素
在 v-for
塊中,我們擁有對父作用域屬性的完全訪問權限。v-for
還支持一個可選的第二個參數為當前項的索引。
1 <ul id="example-2"> 2 <li v-for="(item, index) in items"> 3 {{ parentMessage }} - {{ index }} - {{ item.message }} 4 </li> 5 </ul>
一個對象的 v-for
也可以用 v-for
通過一個對象的屬性來迭代。比如對象里的屬性值value
1 <ul id="v-for-object" class="demo"> 2 <li v-for="value in object"> 3 {{ value }} 4 </li> 5 </ul>
還可以傳入第二個參數key 和第三個參數 index,順序不能亂,否則結果也會亂
1 <div v-for="(value, key, index) in object"> 2 {{ index }}. {{ key }}: {{ value }} 3 </div>
1 new Vue({ 2 el: '#v-for-object', 3 data: { 4 object: { 5 firstName: 'John', 6 lastName: 'Doe', 7 age: 30 8 } 9 } 10 })
結果:
key
屬性。理想的
key
值是每項都有的且唯一的 id。這個特殊的屬性相當於 Vue 1.x 的
track-by
,但它的工作方式類似於一個屬性,所以你需要用
v-bind
來綁定動態值 (在這里使用簡寫):
1 <div v-for="item in items" :key="item.id"> 2 <!-- 內容 --> 3 </div>
建議盡可能在使用 v-for
時提供 key
,除非遍歷輸出的 DOM 內容非常簡單,或者是刻意依賴默認行為以獲取性能上的提升。
7. 根據條件展示元素:v-show
1 <h1 v-show="ok">Hello!</h1>
帶有 v-show
的元素始終會被渲染並保留在 DOM 中。v-show
是簡單地切換元素的 CSS 屬性 display
。
注意,v-show
不支持 <template>
語法,也不支持 v-else
。
8. v-if
vs v-show
v-if
是“真正的”條件渲染,因為它會確保在切換過程中條件塊內的事件監聽器和子組件適當地被銷毀和重建。
v-if
也是惰性的:如果在初始渲染時條件為假,則什么也不做——直到條件第一次變為真時,才會開始渲染條件塊。
相比之下,v-show
就簡單得多——不管初始條件是什么,元素總是會被渲染,並且只是簡單地基於 CSS 進行切換。
一般來說,v-if
有更高的切換開銷,而 v-show
有更高的初始渲染開銷。因此,如果需要非常頻繁地切換,則使用 v-show
較好;如果在運行時條件不太可能改變,則使用 v-if
較好。
9.v-if
與 v-for
一起使用
當 v-if
與 v-for
一起使用時,v-for
具有比 v-if
更高的優先級。