v-htmljavascript
使用 v-html的時候該指令中的值會覆蓋綁定標籤中原有的值,且使用v-html的時候不要將他設置爲給用戶提供內容的地方,由於v-html很容易被XSS攻擊html
v-bindvue
v-ifjava
使用v-if綁定的標籤,當其指令值爲truthy的時候該標籤是直接被刪除掉了數組
而當其指令值爲其餘任意存在的值時,就意味着值爲true瀏覽器
若是您如今有一個需求是讓多個標籤都使用v-if,則可使用template標籤,使用該標籤包裹須要被一塊兒隱藏或顯示的標籤,在該標籤上綁定v-if便可app
<template v-if="ok"> <h1>Title</h1> <p>Paragraph 1</p> <p>Paragraph 2</p> </template>
v-showide
動態參數組件化
定義:在v-bind中,被綁定的屬性被稱之爲參數,如 id、class、href、src...post
用法:使用方括號括起來的js表達式做爲指令的動態參數
注意事項:在使用動態參數的時候,須要避免使用大寫的字符來命名,由於瀏覽器會把命名強制轉換爲小寫,其次,動態參數有一些語法約束,如空格和引號放在動態參數中是無效的
<div id="app"> <!-- 2.6.0版本新增:動態參數 --> <img v-bind:[attribute]="url"> <!-- 這裏的attribute寫成大寫也能有效果,由於瀏覽器會把該變量名強制轉換爲小寫 --> <br> <!-- <img :['s'+ 'rc']="url" alt=""> --> <!-- 這種寫法在編譯時會報錯,由於不容許使用引號 --> <img :[compsrc]="url" alt=""> </div> <script> const vm = new Vue({ el: '#app', data: { attribute: 'src', url: './images/logo-footer.png' }, computed: { // 經過使用計算屬性巧妙避開在動態參數中使用引號和空格 compsrc() { return 's' + 'rc' } }, }) </script>
vue中複用性的問題
由於vue會盡量高效的渲染元素,一般會複用已有的元素。
你們可能之前出現過這樣的問題,
<!-- 有時候咱們可能想實現這樣的效果:我點擊按鈕的時候改變登陸方式,即以下的帳號和用戶名兩種 --> <template v-if='isShow'> <label for='number'>帳號:</label> <input type="text" id="number"> </template> <template v-else> <label for="username">用戶名:</label> <input type="text" id="username"> </template> <button @click='btnClick'>切換isShow</button> <!-- 可是這樣使用以後咱們會出現這樣一個問題:當咱們在其中一個登陸方式輸入了東西以後,咱們忽然想切換另外一個登陸方式,那麼我點擊切換以後,按道理來講咱們輸入框中的信息應該被重置掉,由於咱們不是使用的同一個input文本框。可是事實老是相反的,緣由就在於vue會複用已存在的元素,因此其實根本就沒有建立一個新的input文本框 -->
解決方案:在input標籤中加入一個 key
屬性,給該屬性命名(字符串or數字),加以區分便可。可是這不會致使label標籤不復用,由於label標籤沒有key屬性。
v-for的注意事項:
在v-for的語法中其實能夠把in代替爲of做爲分隔符;
數組更新檢測:
vm.lists.splice(index,num,newValue)
or Vue.set(vm.lists,index,newValue)
Vue.set(vm.lists,index,newValue)
的方法進行添加。在 <template>
上使用 v-for
<ul> <template v-for="item in items"> <li>{{ item.msg }}</li> <li class="divider" role="presentation"></li> </template> </ul>
v-for與v-if一同使用的問題
在組件中使用v-for的注意事項
在有些html元素中,對於哪些元素能夠出如今其內部是有嚴格限制的,例如:p元素中若是有div元素,那麼div會被提高到跟p元素外部,因此在進行組件化開發的時候,在使用這些約束條件的元素會有一些問題。
<table> <blog-post-row></blog-post-row> </table> <!-- 這個自定義組件會被提高到tabel以外,最終渲染的樣式確定就出錯了 -->
解決方法:使用Vue中提供的 is 屬性
<table> <tr is="blog-post-row"></tr> </table>
事件處理
once
:綁定的事件只執行一次;能夠被使用在組件事件中prevent
:阻止默認事件的發生,如超連接的跳轉、點擊事件的點擊stop
:阻止冒泡行爲的方法(由內到外)capture
:讓事件進行捕獲(由外到內)self
:只有當事件該自己元素觸發時才發生passive
:滾動事件的默認行爲(滾動行爲)將會當即觸發.passive
和 .prevent
一塊兒使用,由於 .prevent
將會被忽略,同時瀏覽器可能會向你展現一個警告。請記住,.passive
會告訴瀏覽器你不想阻止事件的默認行爲。表單輸入值綁定
.lazy
:將 input事件監聽(同步更新)轉換爲 change事件監聽(當失去焦點時更新).number
:自動將用戶的輸入值轉爲數字類型.trim
:自動過濾用戶輸入的首尾空白字符