四、Vue.js—雙向綁定v-model及監(jiān)視函數(shù)

1. 什么是雙向綁定?

  • {{}}和v-bind僅是單向綁定。只能將Model數(shù)據(jù)的值,綁定到頁面表單元素上,用于顯示(M—>V),而頁面上的更改,無法對應修改到Model數(shù)據(jù)中(V—>×M)。
  • 雙向綁定既可把程序中Model數(shù)據(jù)綁定到表單元素中顯示,第一個方向:M—>V;同時,又可把表單元素中修改的值,綁定回程序中Model數(shù)據(jù)變量上保存,第二個方向:V—>M。
  • 今后,只要希望修改表單元素的值后,也能自動修改對應模型數(shù)據(jù)的值,則用v-model指令進行綁定。

2.如何進行雙向綁定?

  • 綁定文本框和文本域
    <input type="text" v-model:value="變量">
    <textarea v-model:value="變量" ></textarea>
    結果:文本框內容一更新,立刻將新值自動更新回程序的變量里。
    原理:v-model:value會被自動翻譯為oninput="function(){...}"事件綁定代碼,并在事件處理函數(shù)中封裝修改data中變量的代碼。只要文本框內容被修改,就觸發(fā)DOM的oninput事件,自動執(zhí)行修改data中的變量的代碼。
  • 綁定select元素
    用不是直接修改select元素的文本,而是通過選擇option來改變select的value。
    例如:
<select v-model:value="orderStatus">
  <option value="10">未付款</option>
  <option value="20">已付款</option>
  <option value="30">已發(fā)貨</option>
  <option value="40">已簽收</option>
</select>

結果:select的選中項的值改變,就會立刻將新選中的option的value值更新回內存的程序里。
原理:單向綁定時:將Model中的變量值賦值給select的value屬性,然后,select元素會獲得value屬性值去和每個option的value值做比較。哪個option的value等于select的value,就選中哪個option。修改時,<select v-model:value="×××">會被自動翻譯為:<select onchange="vue對象.變量=當前select元素的value屬性值">。

  • 綁定radio元素
    備選項的value都是固定不變的,所以肯定綁定的不是value屬性,選中與不選中radio改變的其實是它的checked屬性。
    例如:
<label><input type="radio" value="1" v-model:checked="sex">男</label>
<label><input type="radio" value="0" v-model:checked="sex">女</label>

原理:單向綁定時,v-model會拿checked屬性綁定的變量值和當前radio的value屬性進行比較。如果綁定的變量的值等于當前radio的vaue,就選中該radio,否則,如果綁定的變量值,不等于當前radio的value,就不選中該radio。

  • 綁定checkbox元素
    不需要和value作比較,直接用checked屬性綁定到一個bool值變量即可。
    <input type="checkbox" v-mode:checked="isAgree">同意
    原理:單向綁定時:綁定的變量值返回true,就選中,返回false,就不選中。修改時:直接將checkbox當前的選中狀態(tài)checked屬性值更新回模型變量上。

簡寫形式:v-model="模型變量",省略:value

v-model其實會自動根據(jù)當前所在的不同表單元素,切換不同的屬性綁定。

監(jiān)視函數(shù)

  • 什么是監(jiān)視函數(shù)
    在模型數(shù)據(jù)發(fā)生變化時,自動執(zhí)行的函數(shù)
  • 什么時候用監(jiān)視函數(shù)
    只要希望在模型數(shù)據(jù)發(fā)生變化時,立刻執(zhí)行一項操作時,需要監(jiān)視函數(shù)監(jiān)控模型變量
  • 如何用監(jiān)視函數(shù)
new Vue({
    el:"×××",
    data:{...}
    watch:{
      模型變量名(){
        //想要執(zhí)行的函數(shù)操作
    }
  }
})
  • 監(jiān)視函數(shù)的函數(shù)名,必須是要監(jiān)視的變量名。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容