跳到主要内容

表单输入绑定

基本用法

text、textarea、checkbox、radio、select、form

<template>
<div id="app">
<textarea v-model="message" placeholder="edit me" />
<p>Message is: {{ message }}</p>
<button @click="message = 'aziz'">set message to aziz</button>
<hr />

<h2>爱好:{{ fromDatas }}</h2>
<select name="hobby" id="hobby" v-model="fromDatas">
<option value="">-</option>
<option v-for="e in arr" :value="e.value" :key="e.value">{{ e.text }}</option>
</select>
<hr />

<h1>from应用</h1>
<form @submit.prevent="onSubmit">
<label>
<span>用户名</span>
<input type="text" v-model="user.name" />
</label>
<label>
<span>密码</span>
<input type="text" v-model="user.password" />
</label>
<button type="submit">登录</button>
</form>
</div>
</template>

<script>
export default {
name: 'App',
data() {
return {
arr: [
{ text: '抽烟', value: 1 },
{ text: '喝酒', value: 2 },
{ text: '烫头', value: 3 }
],
fromDatas: '',
message: 'good',
user: {
name: '',
password: ''
}
}
},
methods: {
onSubmit() {
console.log(this.user)
}
}
}
</script>

<style>
#app {
font-family: 'Avenir', Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
margin-top: 60px;
}
</style>

案例

案例 2

v-model 监听 input 事件:键盘、鼠标、任何输入的情况

v-model - 双向绑定

修饰符

.lazy : 用户 change 数据时进行同步

.number:自动将用户的输入值转为数值类型

.trim:过滤用户输入的首尾空白字符

自定义组件

<h2>v-model的本质</h2>
<p>model:{{ model }}</p>
<input type="text" :value="model" @input="model = $event.target.value" />3
<!-- 等价于 -->
<input type="text" v-model="model" />

==组件间通信尽量不使用 v-model==