热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Vue学习之表单数据双向绑定vmodel

1.双向数据绑定Vue.js是一个MVVM框架,即数据双向绑定,即当数据发生变化时,视图也就发生变化;当视图发生变化时&#x
1. 双向数据绑定

       Vue.js是一个MVVM框架,即数据双向绑定,即当数据发生变化时,视图也就发生变化;当视图发生变化时,数据也会跟着同步变化。这也算是Vue.js的精髓之处。值得注意的是,我们所说的数据双向绑定,一定是对于UI控件来说的,非UI控件不会涉及到数据双向绑定。单向数据绑定是使用状态管理工具的前提,如果我们用Vuex,那么数据流也是单项的,这时就会和双向数据绑定有冲突。

2. 为什么要实现数据的双向绑定

       在Vue.js中,如果使用Vuex,实际上数据还是单向的,之所以说是数据双向绑定,这是用的UI控件来说,对于我们处理表单,Vue.js的双向数据绑定用起来就特别舒服了。即两者并不互斥,在全局性数据流使用单项,方便跟踪;局部性数据流使用双向,简单易操作

3. 在表单中使用双向数据绑定

       可以使用v-model指令在表单、、元素上创建双向数据绑定。它会根据控件类型自动选取正确的方法来更新元素。尽管有些神奇,但v-model本质上不过是语法糖。它负责监听用户的输入事件以更新数据,并对一些极端场景进行一些特殊处理。
       注意:v-model会忽略所有表单元素的value、checked、selected特性的初始值而总是将Vue实例的数据作为数据来源,我们应该通过Javascript在组件的data选项中声明初始值。

3.1. 文本框

<body>
<div id&#61;"app">

<input type&#61;"text" v-bind:value&#61;"searchMap.keyWord" />

<input type&#61;"text" v-model&#61;"searchMap.keyWord" />
<p>您要查询的是&#xff1a;{{searchMap.keyWord}}p>
div>
<script src&#61;"https://cdn.jsdelivr.net/npm/vue/dist/vue.js">script>
<script>
new Vue({
el: &#39;#app&#39;,
data: {
searchMap:{
keyWord: &#39;文本框的内容&#39;
}
}
});
script>
body>

填写完毕后&#xff0c;打开浏览器&#xff0c;对比两个输入框&#xff0c;查看效果。
在这里插入图片描述

3.2. 单复选框

<div id&#61;"app">
单复选框&#xff1a;
<input type&#61;"checkbox" id&#61;"checkbox" v-model&#61;"checked">
<label for&#61;"checkbox">{{ checked }}label>
div>
<script src&#61;"https://cdn.jsdelivr.net/npm/vue/dist/vue.js">script>
<script>
new Vue({
el: &#39;#app&#39;,
data: {
checked: false
}
});
script>

在这里插入图片描述
在这里插入图片描述
注&#xff1a;当勾选时变true&#xff0c;取消时变false。

3.3. 多复选框

示例1&#xff1a;

多复选框&#xff1a;
<input type&#61;"checkbox" id&#61;"checkbox" value&#61;"吃饭" v-model&#61;"checked">
<label>吃饭label>
<input type&#61;"checkbox" id&#61;"checkbox" value&#61;"睡觉" v-model&#61;"checked">
<label>睡觉label>
<input type&#61;"checkbox" id&#61;"checkbox" value&#61;"打豆豆" v-model&#61;"checked">
<label>打豆豆label><br />
<p>选中的值&#xff1a;{{checked}}p>
<script src&#61;"https://cdn.jsdelivr.net/npm/vue/dist/vue.js">script>
<script> new Vue({ el: &#39;#app&#39;, data: { checked: [] }
});
script>

示例2&#xff1a;

<div id&#61;”app”>
//动态读取&#xff0c;使用<label>嵌套
<label v-for&#61;"opt in options" >
<input type&#61;"checkbox" :value&#61;"opt.value" v-model&#61;"slb" />{{opt.text}}
label>
div>
<script src&#61;"https://cdn.jsdelivr.net/npm/vue/dist/vue.js">script>
<script type&#61;"text/Javascript">var vue &#61; new Vue({el:&#39;#app&#39;,data:{options:[{value:&#39;A&#39;, text:&#39;吃饭&#39;},{value:&#39;B&#39;, text:&#39;睡觉&#39;},{value:&#39;C&#39;, text:&#39;打豆豆&#39;},],slb : [&#39;A&#39;, &#39;B&#39;]}});
script>

在这里插入图片描述

3.4. 单选按钮

<body>
<div id&#61;"app">
单选按钮&#xff1a;
<input type&#61;"radio" id&#61;"one" value&#61;"One" v-model&#61;"picked">
<label for&#61;"one">Onelabel>
<input type&#61;"radio" id&#61;"two" value&#61;"Two" v-model&#61;"picked">
<label for&#61;"two">Twolabel>
<span>选中的值: {{ picked }}span>
div>
<script src&#61;"https://cdn.jsdelivr.net/npm/vue/dist/vue.js">script>
<script> new Vue({ el: &#39;#app&#39;, data: { picked: &#39;&#39; }});
script>
body>

在这里插入图片描述

3.5. 下拉框

<body>
<div id&#61;"app">
下拉框&#xff1a;
<select v-model&#61;"selected">
<option disabled value&#61;"">请选择option>
<option value&#61;"北京">北京option>
<option value&#61;"上海">上海option>
<option value&#61;"深圳">深圳option>
select>
<span>选中的值: {{ selected }}span>
div>
<script src&#61;"https://cdn.jsdelivr.net/npm/vue/dist/vue.js">script>
<script> var vm &#61; new Vue({ el: &#39;#app&#39;, data: { selected: &#39;北京&#39; // 默认选择北京&#xff08;不需要默认选择则写成&#39;&#39;&#xff09;} });
script>
body>

在这里插入图片描述
注意&#xff1a;如果 v-model 表达式的初始值未能匹配任何选项&#xff0c;

推荐阅读
  • Vue基础一、什么是Vue1.1概念Vue(读音vjuː,类似于view)是一套用于构建用户界面的渐进式JavaScript框架,与其它大型框架不 ... [详细]
  • 本文介绍了JavaScript进化到TypeScript的历史和背景,解释了TypeScript相对于JavaScript的优势和特点。作者分享了自己对TypeScript的观察和认识,并提到了在项目开发中使用TypeScript的好处。最后,作者表示对TypeScript进行尝试和探索的态度。 ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
  • ReactJSUIAnt设计空组件原文:https://w ... [详细]
  • 前端库Bootstrap框架:「11]使用 span 创建行内元素
    前端库Bootstrap框架:「11]使用 span 创建行内元素 ... [详细]
  • Node.js学习笔记(一)package.json及cnpm
    本文介绍了Node.js中包的概念,以及如何使用包来统一管理具有相互依赖关系的模块。同时还介绍了NPM(Node Package Manager)的基本介绍和使用方法,以及如何通过NPM下载第三方模块。 ... [详细]
  • 微信民众号商城/小顺序商城开源项目介绍及使用教程
    本文介绍了一个基于WeiPHP5.0开发的微信民众号商城/小顺序商城的开源项目,包括前端和后端的目录结构,以及所使用的技术栈。同时提供了项目的运行和打包方法,并分享了一些调试和开发经验。最后还附上了在线预览和GitHub商城源码的链接,以及加入前端交流QQ群的方式。 ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
  • loader资源模块加载器webpack资源模块加载webpack内部(内部loader)默认只会处理javascript文件,也就是说它会把打包过程中所有遇到的 ... [详细]
  • React 小白初入门
    推荐学习:React官方文档:https:react.docschina.orgReact菜鸟教程:https:www.runoob.c ... [详细]
  • RN即ReactNative基于React框架针对移动端的跨平台框架,在学习RN前建议最好熟悉下html,css,js,当然如果比较急,那就直接上手吧,毕竟用学习前面基础的时间,R ... [详细]
  • 1.移除consol.log()的babel插件安装:npmibabel-plugin-transform-remove-console-D配置:babel.config.js:这 ... [详细]
  • 前言:原本纠结于Web模板,选了Handlebars。后来发现页面都是弱逻辑的,不支持复杂逻辑表达式。几乎要放弃之际,想起了Javascript中ev ... [详细]
  • Node.js详细安装及环境配置
    1、下载安装根据自己电脑系统及位数选择,我这里选择windows64位.msi格式安装包(官网:https:odejs.orgzh-cndownload).msi和.zip格式区别 ... [详细]
  • 技术周报·2021-05-07-小编推荐向现代Javascript转型原文标题:Publish,ship,andinstallmodernJavaScriptforfaste ... [详细]
author-avatar
IP-COM东莞办事处_426
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有