v-model: basics/radio/checkbox
by edith_tang
HTML
<div id="app">
<input type="text" v-model="message" placeholder="您爱豆的姓名">
<p>
您要送小花花给:{{ message }}
</p>
<textarea v-model="comment" placeholder="说一段彩虹屁吧..."></textarea>
<!--
white-space CSS 属性是用来设置如何处理元素中的空白。
pre: 连续的空白符会被保留。在遇到换行符或者<br>元素时才会换行。
-->
<p style="white-space: pre">
嘘~来听我吹彩虹屁:{{ comment }}
</p>
<!-- 使用`v-model`后,表单控件显示的值只依赖所绑定的数据,不再关心初始化时的`value`属性,对于在`<textarea></textarea>`中插入的值,也不会生效 -->
<input type="text" v-model="validInput" value="我不会被显示吗?"><br><br>
<textarea v-model="validTxt">v-model你你你...</textarea><br><br>
<!--
输入中文时,在输入拼音阶段不会触发更新。如果想要这么做的话,可以用@input来替换`v-model`
-->
<input type="text" @input="showPinyin" placeholder="我爱豆的拼音我也要!"><br>
<p>
让我看到我爱豆的拼音:{{ allIn }}
</p>
<hr>
<!-- 单选按钮单独使用时,不需要v-model,直接使用v-bind绑定一个布尔类型的值,为真时选中,为否时不选 -->
<p>
你想要拥有《披荆斩棘的哥哥》吗?:
</p>
<input type="radio" :checked="oldBro" @click="handleStatusBro">
<label>求求不要,我的眼睛</label>
<hr>
<!-- 如果是互相排斥的一组单选按钮,就需要用v-model配合value来使用 -->
<p>pick 你最喜欢的小姐姐,没有之一!</p>
<!--
HTML的表单相关知识:将一个 <label> 和一个 <input> 元素匹配在一起,你需要给 <input> 一个 id 属性。而 <label> 需要一个 for 属性,其值和 <input> 的 id 一样。
-->
<input type="radio" v-model="pickSis" value="金晨" id="jc">
<label for="jc">金晨小姐姐</label>
<input type="radio" v-model="pickSis" value="宁静" id="nj">
<label for="nj">静静子</label>
<input type="radio" v-model="pickSis" value="陈松伶" id="csl">
<label for="csl">陈松伶</label>
<p>
您pick到的是:{{ pickSis }}
</p>
<!--
复选框单独使用时,和单选按钮的同异点:
同:同样会绑定一个布尔值
异:单选按钮用v-bind绑定布尔值,复选框则用v-model绑定。
-->
<input type="checkbox" v-model="checked" id="checked">
<label for="checked">选择状态:{{ checked }}</label>
<hr>
<!--
复选框组合使用
-->
<p>
选两组喜欢的小姐姐:
</p>
<input type="checkbox" v-model="fav" id="eve" value="艾瑞巴蒂">
<label for="eve">7 人组 Everybody</label>
<input type="checkbox" v-model="fav" id="dwk" value="大碗宽面">
<label for="dwk">7 人组 大碗宽面</label>
<input type="checkbox" v-model="fav" id="blv"...
JavaScript
var app = new Vue({
el: '#app',
data: {
message: '朱一龙',
comment: '一龙一龙我爱你 笼包笼包永相随',
validTxt: '',
validInput: '',
allIn: 'zyl',
oldBro: true,
pickSis: '',
checked: true,
fav: []
},
methods: {
showPinyin: function(e) {
this.allIn = e.target.value;
},
handleStatusBro: function() {
this.oldBro = !this.oldBro;
}
}
})