Vue双向绑定
什么是双向绑定数据
Vue.js是一个MVVM框架,即数据双向绑定,即当数据发生变化的时候,试图也就发生变化,
当试图发生变化的时候,数据也会跟着同步变化。这也算是Vue.js的精髓之处了
值得注意的是,我们所说的数据双向绑定一定是对于UI控件来说的非UI控件不会涉及到数据
双向绑定。单向数据绑定是使用状态管理工具的前提。如果我们使用vuex,那么数据流也是单向
的,这时就会和双向数据绑定有冲突。
为什么要实现数据的双向绑定
在Vue.js中,如果使用vuex,实际上数据还是单向的,之所以说是数据双向绑定,这是用的UI
控件来说,对于我们处理表单,Vue.js的双向数据双向绑定用起来就舒服了。即两者并不互斥,在
全局性数据流使用单向,方便跟踪,局部性数据流使用双向,简单易操作
在表单中使用双向数据绑定
你可以使用v-model指令在表单<input>,<textarea>,及<select>元素上创建双向数据绑定。它
会根据控件类型自动选取正确的方法来更新元素。尽管有些神奇,但v-model本质上不过是语法糖,
它负责监听用户的输入事件以更新数据,并对一些极端场景进行一些特殊处理
注意:v-model会忽略所有表单元素的value,checked,selected特性的初始值而总是将Vue实例
的数据作为数据来源,应该通过JavaScript在组件的data选项中声明初始值。
输入框:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <! DOCTYPE html> < html lang="en"> < head > < meta charset="UTF-8"> < title >Title</ title > </ head > < body > < div id="app"> 输入的文本:< input type="text" v-model="message">{{message}} </ div > < script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></ script > < script > var vm = new Vue({ el : "#app", data: { message: "" } }); </ script > </ body > </ html > |
我们在输入框输入文本,后面会跟着一起动态添加或删除文本
单选框:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <! DOCTYPE html> < html lang="en"> < head > < meta charset="UTF-8"> < title >Title</ title > </ head > < body > < div id="app"> 性别: < input type="radio" name="sex" value="男" v-model="sex">男 < input type="radio" name="sex" value="女" v-model="sex">女 < p > 选中了:{{sex}} </ p > </ div > < script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></ script > < script > var vm = new Vue({ el : "#app", data: { sex: '' } }); </ script > </ body > </ html > |
下拉框:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | <! DOCTYPE html> < html lang="en"> < head > < meta charset="UTF-8"> < title >Title</ title > </ head > < body > < div id="app"> 下拉框: < select v-model="world"> < option value="" disabled>--请选择--</ option > < option >A</ option > < option >B</ option > < option >C</ option > </ select > < span >value:{{world}}</ span > </ div > < script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></ script > < script > var vm = new Vue({ el : "#app", data: { world: 'B' } }); </ script > </ body > </ html > |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧