面试题答案
一键面试文本框双向绑定
在Vue中,v-model
指令在文本框上实现双向绑定的原理是:它是value
属性和input
事件的语法糖。
示例代码如下:
<template>
<div>
<input v-model="message" type="text">
<p>{{ message }}</p>
</div>
</template>
<script>
export default {
data() {
return {
message: ''
}
}
}
</script>
原理:v-model
会为<input>
元素绑定value
属性,值为message
,当文本框内容发生变化时,会触发input
事件,Vue会自动更新message
的值,同时<p>
标签中绑定的message
也会随之更新,实现双向绑定。
复选框双向绑定
对于复选框,v-model
的双向绑定原理稍有不同。它会根据v-model
绑定的值是否在复选框的value
数组中来确定复选框是否选中。
示例代码如下:
<template>
<div>
<input type="checkbox" v-model="isChecked">
<p>{{ isChecked ? '选中' : '未选中' }}</p>
</div>
</template>
<script>
export default {
data() {
return {
isChecked: false
}
}
}
</script>
当复选框状态改变时,isChecked
的值会相应改变,同时<p>
标签中的文本也会根据isChecked
的值更新,实现双向绑定。如果是多个复选框绑定到一个数组:
<template>
<div>
<input type="checkbox" value="apple" v-model="selectedFruits">苹果
<input type="checkbox" value="banana" v-model="selectedFruits">香蕉
<input type="checkbox" value="cherry" v-model="selectedFruits">樱桃
<p>{{ selectedFruits }}</p>
</div>
</template>
<script>
export default {
data() {
return {
selectedFruits: []
}
}
}
</script>
v-model
会根据复选框的value
判断是否添加或移除数组中的值,实现双向同步。