一起學Vue之表單輸入綁定

来源:https://www.cnblogs.com/hsiang/archive/2020/01/19/12215833.html
-Advertisement-
Play Games

在Vue進行前端開發中,表單的輸入是基礎且常見的功能,本文以一個簡單的小例子,簡述v-model數據綁定的用法,僅供學習分享使用,如有不足,還請指正。 ...


在Vue進行前端開發中,表單的輸入是基礎且常見的功能,本文以一個簡單的小例子,簡述v-model數據綁定的用法,僅供學習分享使用,如有不足,還請指正。

基礎用法

你可以用 v-model 指令在表單 <input>、<textarea> 及 <select> 元素上創建雙向數據綁定。它會根據控制項類型自動選取正確的方法來更新元素。儘管有些神奇,但 v-model 本質上不過是語法糖。它負責監聽用戶的輸入事件以更新數據,並對一些極端場景進行一些特殊處理。v-model 會忽略所有表單元素的 value、checked、selected attribute 的初始值而總是將 Vue 實例的數據作為數據來源。你應該通過 JavaScript 在組件的 data 選項中聲明初始值。v-model 在內部為不同的輸入元素使用不同的屬性並拋出不同的事件,如下所示:

  • text 和 textarea 元素使用 value 屬性和 input 事件;
  • checkbox 和 radio 使用 checked 屬性和 change 事件;
  • select 欄位將 value 作為 prop 並將 change 作為事件。

文本

通過v-model將input的value值和msg進行雙向綁定,如下所示:

1 <input v-model="msg" placeholder="edit me">
2 <p>Message is: {{ msg }}</p>

多行文本

通過v-model將textarea的value值和msg進行雙向綁定,如下所示:

1 <span>多行信息如下:</span>
2 <p style="white-space: pre-line;">{{ msg }}</p>
3 <textarea v-model="msg" placeholder="add multiple lines"></textarea>

註意:white-space: pre-line;表示:合併空白符序列,但是保留換行符。

在文本區域插值 (<textarea>{{text}}</textarea>) 並不會生效,應用 v-model 來代替。

覆選框

單個覆選框,綁定到布爾值,如下所示:

1 <input type="checkbox" id="checkbox" v-model="checked">
2 <label for="checkbox">{{ checked }}</label>

註意:for="checkbox" 表示將label和input進行綁定。v-model="checked"中的checked為定義的屬性。

多個覆選框,綁定到同一個數組:

 1 <div id='example-3'>
 2     <input type="checkbox" id="jack" value="Jack" v-model="checkedNames">
 3     <label for="jack">Jack</label>
 4     <input type="checkbox" id="john" value="John" v-model="checkedNames">
 5     <label for="john">John</label>
 6     <input type="checkbox" id="mike" value="Mike" v-model="checkedNames">
 7     <label for="mike">Mike</label>
 8     <br>
 9     <span>選種名稱: {{ checkedNames }}</span>
10 </div>

單選按鈕

v-model="picked" 表示將單選 按鈕的選種的項的value值綁定到picked

1 <div id="example-4">
2     <input type="radio" id="one" value="One" v-model="picked">
3     <label for="one">One</label>
4     <input type="radio" id="two" value="Two" v-model="picked">
5      <label for="two">Two</label>
6     <br>
7     <span>Picked: {{ picked }}</span>
8 </div>

下拉選擇框

單選時,將選種項的值和selected綁定,如下所示:

1 <select v-model="selected">
2     <option disabled value="">請選擇</option>
3     <option>A</option>
4     <option>B</option>
5     <option>C</option>
6 </select>
7 <span>Selected: {{ selected }}</span>

如果 v-model 表達式的初始值未能匹配任何選項,<select> 元素將被渲染為“未選中”狀態。在 iOS 中,這會使用戶無法選擇第一個選項。因為這樣的情況下,iOS 不會觸發 change 事件。因此,更推薦像上面這樣提供一個值為空的禁用選項。

多選時 (綁定到一個數組),如下所示:

1 <select v-model="selected1" multiple style="width: 50px;">
2     <option>A</option>
3     <option>B</option>
4     <option>C</option>
5 </select>
6 <br>
7 <span>Selected: {{ selected1 }}</span>

用 v-for 渲染的動態選項:

1 <select v-model="selected">
2     <option v-for="option in options" v-bind:value="option.value">
3     {{ option.text }}
4     </option>
5 </select>
6 <span>Selected: {{ selected }}</span>

值綁定

對於單選按鈕,覆選框及選擇框的選項,v-model 綁定的值通常是靜態字元串 (對於覆選框也可以是布爾值):

1  <!-- 當選中時,`picked` 為字元串 "a" -->
2 <input type="radio" v-model="picked" value="a">
3 <!-- `toggle` 為 true 或 false -->
4 <input type="checkbox" v-model="toggle">
5 <!-- 當選中第一個選項時,`selected` 為字元串 "abc" -->
6 <select v-model="selected">
7     <option value="abc">ABC</option>
8 </select>

但是有時我們可能想把值綁定到 Vue 實例的一個動態屬性上,這時可以用 v-bind 實現,並且這個屬性的值可以不是字元串。

1  <input type="checkbox" v-model="toggle" true-value="yes" false-value="no">

// 當選中時 vm.toggle === 'yes' // 當沒有選中時 vm.toggle === 'no'

這裡的 true-value 和 false-value attribute 並不會影響輸入控制項的 value attribute,因為瀏覽器在提交表單時並不會包含未被選中的覆選框。如果要確保表單中這兩個值中的一個能夠被提交,(比如“yes”或“no”),請換用單選按鈕。

1 <input type="radio" v-model="picked" v-bind:value="a">

當選中時 vm.pick === vm.a

1 <select v-model="selected">
2     <!-- 內聯對象字面量 -->
3     <option v-bind:value="{ number: 123 }">123</option>
4 </select>

// 當選中時 typeof vm.selected // => 'object'  vm.selected.number // => 123

修飾符

在預設情況下,v-model 在每次 input 事件觸發後將輸入框的值與數據進行同步 (除了上述輸入法組合文字時)。你可以添加 lazy 修飾符,從而轉變為使用 change 事件進行同步:

1 <!-- 在“change”時而非“input”時更新 -->
2 <input v-model.lazy="msg" type="text">

如果想自動將用戶的輸入值轉為數值類型,可以給 v-model 添加 number 修飾符:

1  <input v-model.number="age" type="number">

這通常很有用,因為即使在 type="number" 時,HTML 輸入元素的值也總會返回字元串。如果這個值無法被 parseFloat() 解析,則會返回原始的值。

如果要自動過濾用戶輸入的首尾空白字元,可以給 v-model 添加 trim 修飾符:

1 <input type="text" v-model.trim="msg">

關於示例中用到的變數,如下所示:

 1 <script type="text/javascript">
 2     var app = new Vue({
 3         el: '#app',
 4         data: {
 5             msg: 'hello world!!!',
 6             checked:true,
 7             checkedNames: [],
 8             picked: '',
 9             a:"hello",
10             selected: '',
11             selected1: [],
12             toggle:false,
13             age:0,
14             options: [
15                 { text: 'One', value: 'A' },
16                 { text: 'Two', value: 'B' },
17                 { text: 'Three', value: 'C' }
18             ]
19         },
20     });
21 </script>
View Code

備註

一簫一劍平生意,負盡狂名十五年。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 電腦科學里的巨集(Macro),是一種批量批處理的稱謂。一般說來,巨集是一種規則或模式,或稱語法替換 ,用於說明某一特定輸入(通常是字元串)如何根據預定義的規則轉換成對應的輸出(通常也是字元串)。這種替換在預編譯時進行,稱作巨集展開。 發現定義中有意思的點在於這個“語法替換”,。 當巨集定義值本身為常量時 ...
  • 我們知道linux中一個思想:一切皆文件,那麼在我們安裝完postgresql資料庫後,她長什麼樣呢?本文帶著你一起揭開她的面紗,看看postgresql的文件佈局。 說明:由於安裝測試的版本是10.5這裡可以參考官方文檔:https://www.postgresql.org/docs/10/sto ...
  • 參考:https://www.postgresql.org/docs/current/install-procedure.html 完事開頭難!!!如果想瞭解一門技術,看文檔必不可少,實操更不可少,這篇博文記錄了自己學習postgesql的測試安裝文檔,由於對pg的參數瞭解甚少,目前使用的預設的參數 ...
  • postgresql 作為官方號稱的最先進的開源資料庫,從今天(2020-1-19)起開始系統的學習一下,記錄自己學習的點點滴滴。 ...
  • 一幅畫,一次瞬間的回眸,就在那次畫展上,那個眼神,溫柔的流轉,還是那乾凈的皮鞋,一塵不染,俊朗的眉宇性感的唇,悄悄走近,牽手一段浪漫 [toc] MySQL筆記(二) 13、條件查詢 1.普通條件查詢 語法:SELECT COL_LIST FROM TABLE_NAME [WHERE CONDITI ...
  • 每天給自己一個希望,努力做好自己,不為明天煩惱,不為昨天嘆息。當夢想還在,告訴自己:努力,就總能遇見更好的自己! [toc] MySql筆記(一) 1、創建資料庫以及刪除 1.創建資料庫語法:(命令行視窗操作) ~~~~sql CREATE DATABASE DATABASENAME ~~~~ 示例 ...
  • 關於非同步消息,大家都知道,如下: 這些用起來都是比較複雜的,RabbitMQ先要創建Exchange,在創建Queue,還要將Queue和Exchange通過某種規則綁定起來。發消息之前要指定routing-Key,還要控制頭部信息。 即使你只需要一組消息者。那麼你就要經歷上面繁瑣的過程。 但是Re ...
  • 準備工作 因為在編譯時需要下載許多依賴包,在執行編譯前最好先配置下代理倉庫 編譯flink shaded 因為flink依賴flink shaded工程,基本的依賴項都是在這個工程裡面定義的,所以要先編譯這個工程 1. 下載flink shaded工程 "flink shaded" 1. 在寫文章時 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...