二、Vue基础语法学习笔记——事件监听v-on、条件判断(v-if、v-else-if、v-else、v-show)、循环遍历(v-for遍历数组对象,key属性、检测数组更新)、图书案例、双向绑定
四、事件監聽
在前端開發中,我們需要經常和用于交互。
這個時候,我們就必須監聽用戶發生的時間,比如點擊、拖拽、鍵盤事件等等
在Vue中如何監聽事件呢?使用v-on指令
v-on介紹
作用:綁定事件監聽器
縮寫:@
預期:Function | Inline Statement | Object
參數:event
下面,我們就具體來學習v-on的使用。
1.v-on基礎
這里,我們用一個監聽按鈕的點擊事件,來簡單看看v-on的使用
下面的代碼中,
我們使用了v-on:click="counter++”
另外,我們可以將事件指向一個在methods中定義的函數
注:v-on也有對應的語法糖:
v-on:click可以寫成@click
2.v-on參數
當通過methods中定義方法,以供@click調用時,需要注意參數問題:
-
情況一:如果該方法不需要額外參數,那么方法后的()可以不添加。
但是注意:如果方法本身中有一個參數,那么會默認將原生事件event參數傳遞進去 -
情況二:如果需要同時傳入某個參數,同時需要event時,可以通過$event傳入事件。
3.v-on修飾符
在某些情況下,我們拿到event的目的可能是進行一些事件處理。
Vue提供了修飾符來幫助我們方便的處理一些事件:
五、條件判斷
1. v-if、v-else-if、v-else
v-if、v-else-if、v-else
- 這三個指令與JavaScript的條件語句if、else、else if類似。
- Vue的條件指令可以根據表達式的值在DOM中渲染或銷毀元素或組件
簡單的案例演示:
v-if的原理:
- v-if后面的條件為false時,對應的元素以及其子元素不會渲染。
- 也就是根本沒有不會有對應的標簽出現在DOM中。
條件渲染案例:
我們來做一個簡單的小案例:
用戶再登錄時,可以切換使用用戶賬號登錄還是郵箱地址登錄。
類似如下情景:
案例中存在的小問題:
小問題:
如果我們在有輸入內容的情況下,切換了類型,我們會發現文字依然顯示之前的輸入的內容。
但是按道理講,我們應該切換到另外一個input元素中了。
在另一個input元素中,我們并沒有輸入內容。
為什么會出現這個問題呢?
問題解答:
這是因為Vue在進行DOM渲染時,出于性能考慮,會盡可能的復用已經存在的元素,而不是重新創建新的元素。
在上面的案例中,Vue內部會發現原來的input元素不再使用,直接作為else中的input來使用了。
解決方案:
- 如果我們不希望Vue出現類似重復利用的問題,可以給對應的input添加key
- 并且我們需要保證key的不同
2. v-show
v-show的用法和v-if非常相似,也用于決定一個元素是否渲染
v-if和v-show對比
v-if和v-show都可以決定一個元素是否渲染,那么開發中我們如何選擇呢?
- v-if當條件為false時,壓根不會有對應的元素在DOM中。
- v-show當條件為false時,僅僅是將元素的display屬性設置為none而已。
開發中如何選擇呢?
- 當需要在顯示與隱藏之間切片很頻繁時,使用v-show
- 當只有一次切換時,通過使用v-if
六、循環遍歷
1.v-for遍歷數組
當我們有一組數據需要進行渲染時,我們就可以使用v-for來完成。
v-for的語法類似于JavaScript中的for循環。
格式如下:item in items的形式。
我們來看一個簡單的案例:
-
如果在遍歷的過程中不需要使用索引值
v-for="item in names"
依次從names中取出item,并且在元素的內容中,我們可以使用Mustache語法,來使用item -
如果在遍歷的過程中,我們需要拿到元素在數組中的索引值呢?
語法格式:v-for=(item, index) in items
其中的index就代表了取出的item在原數組的索引值。
2.v-for遍歷對象
v-for可以用戶遍歷對象:
比如某個對象中存儲著你的個人信息,我們希望以列表的形式顯示出來。
3.組件的key屬性
key的作用主要是為了高效的更新虛擬DOM
4.檢測數組更新
因為Vue是響應式的,所以當數據發生變化時,Vue會自動檢測數據變化,視圖會發生對應的更新。
Vue中包含了一組觀察數組編譯的方法,使用它們改變數組也會觸發視圖的更新。
七、階段案例
圖書購物車
代碼實現:HTML、CSS:
八、雙向綁定v-model
1.表單綁定v-model
表單控件在實際開發中是非常常見的。
特別是對于用戶信息的提交,需要大量的表單。
Vue中使用v-model指令來實現表單元素和數據的雙向綁定。
案例的解析:
- 當我們在輸入框輸入內容時
因為input中的v-model綁定了message,所以會實時將輸入的內容傳遞給message,message發生改變。 - 當message發生改變時,因為上面我們使用Mustache語法,將message的值插入到DOM中,所以DOM會發生響應的改變。
- 所以,通過v-model實現了雙向的綁定。
- 當然,我們也可以將v-model用于textarea元素
2.v-model原理
v-model其實是一個語法糖,它的背后本質上是包含兩個操作:
- 也就是說下面的代碼:等同于下面的代碼:
3.v-model:radio
- 當存在多個單選框時
4.v-model:checkbox
復選框分為兩種情況:單個勾選框和多個勾選框
單個勾選框:
v-model即為布爾值。
此時input的value并不影響v-model的值。
多個復選框:
當是多個復選框時,因為可以選中多個,所以對應的data中屬性是一個數組。
當選中某一個時,就會將input的value添加到數組中。
5.v-model:select
和checkbox一樣,select也分單選和多選兩種情況。
單選:只能選中一個值。
- v-model綁定的是一個值。
當我們選中option中的一個時,會將它對應的value賦值到mySelect中 - 多選:可以選中多個值。
v-model綁定的是一個數組。
當選中多個值時,就會將選中的option對應的value添加到數組mySelects中
6.值綁定
初看Vue官方值綁定的時候,我很疑惑:what the hell is that?
但是仔細閱讀之后,發現很簡單,就是動態的給value賦值而已:
我們前面的value中的值,可以回頭去看一下,都是在定義input的時候直接給定的。
但是真實開發中,這些input的值可能是從網絡獲取或定義在data中的。
所以我們可以通過v-bind:value動態的給value綁定值。
這不就是v-bind嗎?
這不就是v-bind在input中的應用嗎?搞的我看了很久,搞不清他想講什么。
這里不再給出對應的代碼,因為會用v-bind,就會值綁定的應用了。
7.修飾符
默認情況下,v-model默認是在input事件中同步輸入框的數據的。 也就是說,一旦有數據發生改變對應的data中的數據就會自動發生改變。
lazy修飾符可以讓數據在失去焦點或者回車時才會更新
默認情況下,在輸入框中無論我們輸入的是字母還是數字,都會被當做字符串類型進行處理。
但是如果我們希望處理的是數字類型,那么最好直接將內容當做數字處理。
number修飾符可以讓在輸入框中輸入的內容自動轉成數字類型
如果輸入的內容首尾有很多空格,通常我們希望將其去除
trim修飾符可以過濾內容左右兩邊的空格
總結
以上是生活随笔為你收集整理的二、Vue基础语法学习笔记——事件监听v-on、条件判断(v-if、v-else-if、v-else、v-show)、循环遍历(v-for遍历数组对象,key属性、检测数组更新)、图书案例、双向绑定的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三、Vue组件化开发学习笔记——组件化的
- 下一篇: JS高级——模块化学习笔记