1. 程式人生 > >Vue.js 章6 v-model與表單

Vue.js 章6 v-model與表單

scom utf app console trim charset sel das ini

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src
="Vue.2.6.10.js"></script> </head> <body> <!-- v-model在文本域的用法 --> <div id="app1"> <textarea name="" v-model="text" id="textarea" cols="30" rows="10"></textarea><!--拼音不會更新--> <textarea name="" @input = ‘handleInput‘ id="textarea"
cols="30" rows="10"></textarea><!--實時更新--> <!-- 使用v-model以後,其顯示的值只依賴綁定的數據,初始化的value屬性和textarea標簽之間的值都不會起作用 --> <p>輸入內容:</p> <p style="white-space: pre;">{{ text }}</p> </div> <div id="app2"> <input
type="radio" :checked = ‘picked‘ @click = ‘toggleChecked‘> <label for="">單選按鈕</label> </div> <!-- 組合使用實現互斥選擇 --> <div id="app3"> <input type="radio" v-model="picked" value="html!" id="html"> <label for="html">Html</label> <br> <input type="radio" v-model="picked" value="css!" id="css"> <label for="css">Css</label> <br> <input type="radio" v-model="picked" value="js!" id="js"> <label for="js">JavaScript</label> <br> <p>被選中的項:{{ picked }}</p><!--輸出的是value中的值--> <!-- 原理:v-model配合value,點擊按鈕/標簽—— v-model你可以理解成是value的更高級,:value(v-bind)屬於數據單向綁定,v-model屬於雙向綁定 v-model官方給出的說法是:這其實是一個簡寫的形式,v-model實際執行的是下面的綁定: <input type="text" v-bind:value="dataA" v-on:input="dataA = $event.target.value" /> 在本例中則是:<input type="text" v-bind:value="picked" v-on:click="picked = $event.target.value" /> v-model是動態綁定值到value,然後監聽input的input事件獲取值後賦給dataA的一個過程。 --> </div> <!-- 復選框 --> <div id="app4"> <input type="checkbox" v-model="checked" id="checked"> <label for="checked">選擇狀態:{{ checked }}</label> <br> <input type="checkbox" v-model="multichecked" value="html!" id="html"> <label for="html">Html</label> <br> <input type="checkbox" v-model="multichecked" value="css!" id="css"> <label for="css">Css</label> <br> <input type="checkbox" v-model="multichecked" value="js!" id="js"> <label for="js">JavaScript</label> <br> <p>被選中的項:{{ multichecked }}</p> </div> <div id="app5"> <select v-model="selected" id="" multiple> <!-- 如果option含有value屬性,v-model就會優先匹配value的值,如果沒有就會匹配option標簽內的text --> <!-- 給select添加multiple就可以多選 --> <!-- 在業務中通常用v-for動態輸出option、value與text --> <option>html</option> <option>css</option> <option>js</option> <option>jq</option> <option>vue</option> </select> <p>選擇的項:{{ selected }}</p> </div> <!-- 綁定值 --> <div id="app6"> <input type="radio" v-model="picked" :value="value"> <!-- 別忘了v-model會匹配value的值 --> <label for="">單選按鈕</label> <p>{{ picked }}</p> <p>{{ value }}</p> <input type="checkbox" v-model="toggle" :true-value="value1" :false-value="value2" > <label for="">復選框</label> <p>{{ toggle }}</p> <p>{{ value1 }}</p> <p>{{ value2 }}</p> </div> <!-- 常見的表單修飾符 --> <div id="app7"> <input type="text" v-model.lazy="message"> <!-- 在輸入框內容發生改變後才更新 --> <p>{{ message }}</p> <input type="text" v-model.number="messageNum"> <!-- 將輸入轉換為number類型 --> <p>{{ messageNum }}</p> <input type="text" v-model.trim="messageTrim"> <!-- 過濾首尾空格 --> <p>{{ messageTrim }}</p> <!-- 都會同時影響輸入框中的值 --> </div> </body> <script> var app1 = new Vue({ el:"#app1", data:{ text:‘‘ }, methods: { handleInput:function(e){ console.log(e,e.target); this.text = e.target.value; //InputEvent {isTrusted: true, data: "s", isComposing: true, inputType: "insertCompositionText", // dataTransfer: null, …} // <textarea name id=?"textarea" cols=?"30" rows=?"10">?</textarea>? } }, }); var app2 = new Vue({ el:"#app2", data:{ picked:true }, methods:{ toggleChecked:function(){ this.picked = !this.picked; } } }); var app3 = new Vue({ el:"#app3", data:{ picked:‘‘ } }); var app4 = new Vue({ el:"#app4", data:{ checked:‘‘,//這裏應該是Vue內置的吧,不然真的沒道理... // multichecked:‘‘ 會變為true/false,錯誤寫法 multichecked:[] } }); var app5 = new Vue({ el:"#app5", data:{ selected:[html,css],//要用ctrl+option的方式多選也是醉了 }, }); var app6 = new Vue({ el:"#app6", data:{ picked:false, value:123,//選中時app.picked===app.value toggle:false, value1:a,//選中:app.toggle === app.value1,反之value2 這個應該也是自帶的吧... value2:b } }); var app7 = new Vue({ el:"#app7", data:{ message:‘‘, messageNum:‘‘, messageTrim:‘‘ }, }); </script> </html>

Vue.js 章6 v-model與表單