1. 程式人生 > >vue之v-model

vue之v-model

性別 去空格 計算 oct 屬性 也會 例子 技術 總結

上一篇文章總結了v-bind的用法,我們發現v-bind實現了數據的單向綁定,將vue實例中的數據同元素屬性值進行綁定,今天我們將總結vue中的數據雙向綁定v-model。

v-model實現雙向綁定主要是通過v-bind綁定一個value屬性 ,然後再使用v-on指令給當前元素綁定input事件,下面我們主要總結一下創建的使用方法。

基本用法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>vue</title>
<script src="./vue.js"></script> </head> <body> <div id="demo"> <input v-model="message"> <p>{{message}}</p> </div> <script> var demo = new Vue({ el:#demo, data:{ message:
"hello", }, }) </script> </body> </html>

技術分享圖片技術分享圖片

初始化的時候,我們為message賦值為hello時,input框和p標簽中顯示的也是該值,隨後當我們改變input的value值,p標簽中的值隨之改變。

v-model.lazy

在上面的例子中,當我們改變input框的value時,p標簽的內容立即隨之改變,也就是說,在默認情況下, v-model在input事件中同步輸入框的值與數據,但可以添加一個修飾符 lazy ,從而轉變為在input框失去焦點的時候同步(鼠標移出輸入框時,才同步數據)。

<div id="demo">
        <input v-model.lazy="mess2" />
        <p>mess2 is :{{mess2}}</p>
    </div>
    <script>
        var demo = new Vue({
            el:#demo,
            data:{
                mess2:hello,
            },
        })
    </script>    

技術分享圖片技術分享圖片技術分享圖片

在上面的例子中,因為我們在v-model後面添加了lazy,改變了數據的同步,所以在我們改變輸入框中的值的時候,下面input框的值並沒有直接改變,而是在鼠標移開後才發生數據同步的。

v-model.number

在input中,有一種type="number"的input,但是在html中,該類型的input中輸入的number類型數據最後也會被輸出為字符串類型。

<div id="demo">
        <div>
            type="number"輸入框<input v-model="num1" type="number" /><span>{{type1}}<span>
        </div>
    </div>
    <script>
        var demo = new Vue({
            el:#demo,
            data:{
                num1:2,
            },
            computed:{
                type1(){
                    return typeof(this.num1)
                },
            }
        })
    </script>    

技術分享圖片

技術分享圖片

初始化的時候,獲取的是綁定的值,為number類型,但是當input框的value值發生變化時,類型就變為了字符串類型,此時,我們可以添加一個修飾符number給v-model來處理輸入值,這樣我們就可以獲得number類型的數值了。

<div id="demo">
        <div>
            number修飾符輸入<input v-model.number="num2" type="number" /><span>{{type2}}<span>
        </div>
    </div>
    <script>
        var demo = new Vue({
            el:#demo,
            data:{
                num2:‘‘
            },
            computed:{
                type2(){
                    return typeof(this.num2)
                }
            }
        })
    </script>    

技術分享圖片

v-model.trim

在input框中,對用戶的輸入進行限制是十分重要的,其中最常見的就是去空格了,在vue中,如果要自動過濾用戶輸入的首尾空格,可以添加 trim 修飾符到 v-model 上過濾輸入,需要註意的是,該方法只能去除首尾的空格,不能去除中間的空格。

<div id="demo">
        <input v-model.trim="mess3">
        <p>mess3 is :{{ mess3 }}</p>

    </div>
    <script>
        var demo = new Vue({
            el:#demo,
            data:{
                mess3:‘‘
            },
        })
    </script>    

技術分享圖片

單選框和計算屬性使用

<div id="demo">
        <input type="text" v-model="a" number>
        這個數字加一的結果是{{b}}<br>
        <input type="radio" name="sex" v-model="sex" value="男"><input type="radio" name="sex" v-model="sex" value="女">女
        你的性別是{{sex}}

    </div>
    <script>
        var demo = new Vue({
            el:#demo,
            data:{
                a:"",
                sex:‘‘,
            },
            computed:{
                b:function(){
                    return this.a +1;
                }
            }
        })
    </script>    

技術分享圖片

技術分享圖片

vue之v-model