Vue表单和v-model
官方文档很健全
基本用法
- input
- textarea
- checkbox
- radio
- select
- form
修饰符
- .lazy
- .number
- .trim
<template>
<div id="app">
<input v-model="message" placeholder="edit me"/>
<p>Message is: {{message}}</p>
<p><button @click="message = 'frank'">set message to frank</button></p>
</div>
</template>
<script>
export default {
name: "App",
data(){
return {
message: 'hi'
}
},
components: {}
};
</script>
改了message
,UI会自动变化(改了内存,UI更新)
改了input
里的东西,message
变化,(UI改变,内存变化)
这就是最简单的双向绑定
修饰符
.lazy 待会儿变
.number 只要数字
.trim 两头的空格我不要
v-model
v-model="user.username"
等价于
:value="user.username"
@input="user.username = $event.target.value"
自己写一个v-model
<template>
<div>
<input :value="value" @input="outInput" />
</div>
</template>
<script>
export default {
name: "MyInput",
props: {
value: {
type: String
}
},
methods: {
onInput(e) {
const value = e.target.value;
this.$emit("input", value);
}
}
};
</script>
导出MyInput组件
然后在另外一个组件中引入然后用v-model
使用它
总结
- 问双向绑定就是问
v-model
v-model
就是v-bind:value
和v-on:input
的语法糖
v-model
只监听了input
,还挺好用的,后面就衍生出了.sync