十、VUE基礎學習篇(雙向綁定)- v-model、v-model修飾符、值綁定

碼雲實時更新學習demo地址:https://gitee.com/dxl96/vuexuexi

VUE基礎篇(雙向綁定)

1、v-model的使用

v-model 用在表單中,與數據是雙向綁定關係,相當於表單綁定的vue實例中data的數據改變了,表單的渲染也會改變,同樣操作表單,改變了表單的數據,相應的vue實例中data的數據也會發生相應的改變,這種頁面渲染的表單數據和vue實例的data數據互相影響,任何一方改變都會導致另一方數據的改變就是數據的雙向綁定

下面介紹幾種常見的表單數據綁定:
1)input = text 文本框
2)input = radio 單選按鈕
3)input = checkbox 複選框
4)input = select 下拉框

<!DOCTYPE html>
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>v-model的使用</title>
</head>
<body>
<div id="app">
  <!--  ■【input = text】-->

  <!--  v-model用在表單中,與數據是雙向綁定關係,message值改變了,input的內容也改變,input輸入框的內容改變了message的值同樣改變了-->
  <input type="text" v-model="message">
  <hr>
  <!--  v-model 相當於 v-bind:value 和 v-on:input兩個事件的結合,這樣也實現了雙向綁定-->
  <input type="text" v-bind:value="message" v-on:input="valueChange">
  <hr>

  <!---------------------------------------------------------------------------------------------------------------->

  <!--  ■【input = radio】-->

  <!--  v-model綁定radio單選按鈕,v-model綁定的同一個變量即是同一組,不用在給radio加上一個name屬性來進行分組,
    並且選中的單選按鈕的value值會和v-model綁定的變量進行雙向綁定-->
  <input type="radio" id="man" value="" v-model="sex">
  <label for="man"></label>
  
  <input type="radio" id="woman" value="" v-model="sex">
  <label for="woman"></label>
  <p>您選澤的是:{{sex}}</p>
  <hr>

  <!---------------------------------------------------------------------------------------------------------------->

  <!--  ■【input = checkbox】-->

  <!--  v-model綁定checkbox複選框,v-model綁定的同一個變量即是同一組,不用在給checkbox加上一個name屬性來進行分組,
  並且選中的複選框的value值會和v-model綁定的變量進行雙向綁定,因爲複選框是可多選的,所以如果存在多個複選框則用數組接收綁定,
  如果只有一個複選框可用一個普通變量接收綁定-->

  <input type="checkbox" id="agree" v-model="isAgree">
  <label for="agree">同意協議</label>

  <p>您選澤的是:{{isAgree}}</p>
  <button :disabled="!isAgree">下一步</button>
  <hr>

  <input type="checkbox" value="籃球" v-model="hobbies">籃球
  <input type="checkbox" value="足球" v-model="hobbies">足球
  <input type="checkbox" value="羽毛球" v-model="hobbies">羽毛球
  <input type="checkbox" value="乒乓球" v-model="hobbies">乒乓球
  <p>您選澤的是:{{hobbies}}</p>
  <hr>

  <!---------------------------------------------------------------------------------------------------------------->

  <!--  ■【input = select】-->

  <!--  v-model綁定select下拉框,v-model與綁定數據變量是雙向綁定關係,因爲下拉框是可以設置多選的,所以設置了多選用數組接收綁定,
  如果設置的是單選用一個普通變量接收綁定-->
  <select name="" v-model="fruit">
    <option value="蘋果">蘋果</option>
    <option value="香蕉">香蕉</option>
    <option value="榴蓮">榴蓮</option>
    <option value="栗子">栗子</option>
    <option value="橘子">橘子</option>
  </select>
  <p>您選澤的是:{{fruit}}</p>
  <hr>

  <select name="" v-model="fruits" multiple>
    <option value="蘋果">蘋果</option>
    <option value="香蕉">香蕉</option>
    <option value="榴蓮">榴蓮</option>
    <option value="栗子">栗子</option>
    <option value="橘子">橘子</option>
  </select>
  <p>您選澤的是:{{fruits}}</p>
  <hr>

</div>

<script src="../js/vue.js"></script>
<script>
  const app = new Vue({
    el: "#app",
    data: {
      message: "vue app", //輸入框
      sex: '男', //單選按鈕
      isAgree: false, //複選框單個
      hobbies: [], //複選框多個
      fruit: "", //單選下拉框
      fruits: [] //多選下拉框
    },
    methods: {
      valueChange(event) {
        this.message = event.target.value;
      }
    }
  });
</script>
</body>
</html>

效果
在這裏插入圖片描述

注:值綁定
-初看Vue官方值綁定的時候,我很疑惑: what the hell is that ?
-但是仔細閱讀之後,發現很簡單,就是動態的給value賦值而已
   口我們前面的value中的值,可以回頭去看一下,都是在定input時候直接給定的。
   口但是真實開發中,這些input的值可能是從網絡獲取或定義在data中的
   口所以我們可以通過v-bind:value動態的給value綁定值。
   口這不就是v-bind嗎?

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>v-model的使用</title>
</head>
<body>
<div id="app">
  <!--  ■【值綁定,舉例:】-->

  <!--  -初看Vue官方值綁定的時候,我很疑惑: what the hell is that ?
        -但是仔細閱讀之後,發現很簡單,就是動態的給value賦值而已
            口我們前面的value中的值,可以回頭去看一下,都是在定input時候直接給定的。
            口但是真實開發中,這些input的值可能是從網絡獲取或定義在data中的
            口所以我們可以通過v-bind:value動態的給value綁定值。
            口這不就是v-bind嗎?-->
  <p>值綁定:也就是數據不是直接寫死的,通過動態的值來進行綁定</p>
  <select v-model="fruitsValueBindChoice" multiple>
    <option v-for="item in fruitsValueBind" :value="item">{{item}}</option>
  </select>
  <p>您選澤的是:{{fruitsValueBindChoice}}</p>

</div>

<script src="../js/vue.js"></script>
<script>
  const app = new Vue({
    el: "#app",
    data: {
      fruitsValueBind: ["手機", "電腦", "耳機", "音響", "話筒"],//值綁定part1
      fruitsValueBindChoice: [] //值綁定part2
    }
  });
</script>
</body>
</html>

效果
在這裏插入圖片描述

2、v-model的修飾符

■lazy修飾符:
   口默認情況下, v-model默認是在input事件中同步輸入框的數據的。
   口也就是說,一旦有數據發生改變對應的data中的數據就會自動發生改變。
   口lazy修飾符可以讓數據在失去焦點或者回車時纔會更新。
■number修飾符:
   口默認情況下,在輸入框中無論我們輸入的是字母還是數字,都會被當做字符串類型進行處理。
   口但是如果我們希望處理的是數字類型,那麼最好直接將內容當做數字處理。
   口number修飾符可以讓在輸入框中輸入的內容自動轉成數字類型。
■trim修飾符:
   口如果輸入的內容首尾有很多空格,通常我們希望將其去除
   口trim修飾符可以過濾內容左右兩邊的空格

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>v-model修飾符</title>
</head>
<body>
<!--
■lazy修飾符:
  口默認情況下, v-model默認是在input事件中同步輸入框的數據的。
  口也就是說,一旦有數據發生改變對應的data中的數據就會自動發生改變。
  口lazy修飾符可以讓數據在失去焦點或者回車時纔會更新。
■number修飾符:
  口默認情況下,在輸入框中無論我們輸入的是字母還是數字,都會被當做字符串類型進行處理。
  口但是如果我們希望處理的是數字類型,那麼最好直接將內容當做數字處理。
  口number修飾符可以讓在輸入框中輸入的內容自動轉成數字類型。
■trim修飾符:
  口如果輸入的內容首尾有很多空格,通常我們希望將其去除
  口trim修飾符可以過濾內容左右兩邊的空格
-->

<div id="app">

  lazy修飾符:
  <input type="text" v-model.lazy="message"><br>
  <span>回車或失去焦點更新值:{{message}}</span>
  <br><br>
  <hr>

  無number修飾符,默認是number,輸入就是string:
  <input type="number" v-model="num"><br>
  <span>類型:{{typeof num}}-{{num}}</span>
  <br><br>
  <hr>

  number修飾符:
  <input type="number" v-model.number="age"><br>
  <span>類型:{{typeof age}}-{{age}}</span>
  <br><br>
  <hr>

  trim修飾符:
  <input type="text" v-model.trim="info"><br>
  <span>去除兩邊空白:{{info}}</span>
  <span></span>
  <br><br>
  <hr>
</div>

<script src="../js/vue.js"></script>
<script>
  const app = new Vue({
    el: "#app",
    data: {
      message: "vue app",
      num:0,
      age:17,
      info:""
    }
  });
</script>

</body>
</html>

效果
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章