Vue.js 章6 v-model與表單
阿新 • • 發佈:2019-05-11
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與表單