Vue.js 2.0 表单控件绑定

news2024/11/19 3:46:48

基础用法

你可以用 ​v-model​ 指令在表单​ <input>​、​<textarea>​ 及 ​<select>​ 元素上创建双向数据绑定。它会根据控件类型自动选取正确的方法来更新元素。尽管有些神奇,但 ​v-model ​本质上不过是语法糖。它负责监听用户的输入事件以更新数据,并对一些极端场景进行一些特殊处理。

v-model​ 会忽略所有表单元素的 ​value​、​checked​、​selected attribute​ 的初始值而总是将 Vue 实例的数据作为数据来源。你应该通过 JavaScript 在组件的 ​data ​选项中声明初始值。

v-model​ 在内部为不同的输入元素使用不同的 property 并抛出不同的事件:

  • text 和 textarea 元素使用 ​value​ property 和 ​input​事件;
  • checkbox 和 radio 使用 ​checked​ property 和 ​change​事件;
  • select 字段将 ​value​ 作为 prop 并将 ​change​ 作为事件。

对于需要使用输入法 (如中文、日文、韩文等) 的语言,你会发现 ​v-model​ 不会在输入法组合文字过程中得到更新。如果你也想处理这个过程,请使用 ​input ​事件。

文本

实例

  

在HTML中

<div id="app">

    <p>文本框内的信息: {{ message }}</p>    

    <input v-model="message" placeholder="edit me">

</div>

在JavaScript中

var app = new Vue({

  el: '#app',

  data: {

    message: ''

  }

})

运行结果:

尝试一下 »

多行文本

实例

  

在HTML中

<div id="app">

    <span>多行文本框内的信息:</span>

    <p style="white-space: pre-line;">{{ message }}</p>

    <br>

    <textarea v-model="message" placeholder="add multiple lines"></textarea>

</div>

在JavaScript中

var app = new Vue({

  el: '#app',

  data: {

    message: ''

  }

})

运行结果:

尝试一下 »

注意:在文本区域插值( <textarea>{{text}}</textarea>) 并不会生效,应用​v-model​ 来代替。

复选框

单个复选框,绑定到布尔值:

<input type="checkbox" id="checkbox" v-model="checked">
<label for="checkbox">{{ checked }}</label>

多个勾选框,绑定到同一个数组:

<input type="checkbox" id="jack" value="Jack" v-model="checkedNames">
<label for="jack">Jack</label>
<input type="checkbox" id="john" value="John" v-model="checkedNames">
<label for="john">John</label>
<input type="checkbox" id="mike" value="Mike" v-model="checkedNames">
<label for="mike">Mike</label>
<br>
<span>Checked names: {{ checkedNames }}</span>
new Vue({
  el: '...',
  data: {
    checkedNames: []
  }
})

单选按钮

<input type="radio" id="one" value="One" v-model="picked">
<label for="one">One</label>
<br>
<input type="radio" id="two" value="Two" v-model="picked">
<label for="two">Two</label>
<br>
<span>Picked: {{ picked }}</span>

One

Two

Picked:

选择列表

单选列表:

实例

  

在HTML中

<div id="app-6">

  <p>{{ message }}</p>

  <input v-model="message">

</div>

在JavaScript中

var app6 = new Vue({

  el: '#app-6',

  data: {

    message: 'Hello Vue!'

  }

})

运行结果:


尝试一下 »

<select v-model="selected">
  <option>A</option>
  <option>B</option>
  <option>C</option>
</select>
<span>Selected: {{ selected }}</span>

A  B  C 

Selected:

多选列表(绑定到一个数组):

实例

  

在HTML中

<div id="app-6">

  <p>{{ message }}</p>

  <input v-model="message">

</div>

在JavaScript中

var app6 = new Vue({

  el: '#app-6',

  data: {

    message: 'Hello Vue!'

  }

})

运行结果:


尝试一下 »

<select v-model="selected" multiple>
  <option>A</option>
  <option>B</option>
  <option>C</option>
</select>
<br>
<span>Selected: {{ selected }}</span>

A B C

Selected: [ "C"]

动态选项,用 v-for 渲染:

实例

  

在HTML中

<div id="app-6">

  <p>{{ message }}</p>

  <input v-model="message">

</div>

在JavaScript中

var app6 = new Vue({

  el: '#app-6',

  data: {

    message: 'Hello Vue!'

  }

})

运行结果:


尝试一下 »

<select v-model="selected">
  <option v-for="option in options" v-bind:value="option.value">
    {{ option.text }}
  </option>
</select>
<span>Selected: {{ selected }}</span>
new Vue({
  el: '...',
  data: {
    selected: 'A',
    options: [
      { text: 'One', value: 'A' },
      { text: 'Two', value: 'B' },
      { text: 'Three', value: 'C' }
    ]
  }
})

       One             Two             Three      

Selected: A

绑定 value

对于单选按钮,勾选框及选择列表选项, v-model 绑定的 value 通常是静态字符串(对于勾选框是逻辑值):

实例

  

在HTML中

<div id="app-6">

  <p>{{ message }}</p>

  <input v-model="message">

</div>

在JavaScript中

var app6 = new Vue({

  el: '#app-6',

  data: {

    message: 'Hello Vue!'

  }

})

运行结果:


尝试一下 »

<!-- 当选中时,`picked` 为字符串 "a" -->
<input type="radio" v-model="picked" value="a">
<!-- `toggle` 为 true 或 false -->
<input type="checkbox" v-model="toggle">
<!-- 当选中时,`selected` 为字符串 "abc" -->
<select v-model="selected">
  <option value="abc">ABC</option>
</select>

但是有时我们想绑定 value 到 Vue 实例的一个动态属性上,这时可以用 v-bind 实现,并且这个属性的值可以不是字符串。

复选框

<input
  type="checkbox"
  v-model="toggle"
  v-bind:true-value="a"
  v-bind:false-value="b"
>
// 当选中时
vm.toggle === vm.a
// 当没有选中时
vm.toggle === vm.b

单选按钮

<input type="radio" v-model="pick" v-bind:value="a">
// 当选中时
vm.pick === vm.a

选择列表设置

<select v-model="selected">
    <!-- 内联对象字面量 -->
  <option v-bind:value="{ number: 123 }">123</option>
</select>
// 当选中时
typeof vm.selected // -> 'object'
vm.selected.number // -> 123

修饰符

.lazy

在默认情况下, v-model 在 input 事件中同步输入框的值与数据,但你可以添加一个修饰符 lazy ,从而转变为在 change 事件中同步:

<!-- 在 "change" 而不是 "input" 事件中更新 -->
<input v-model.lazy="msg" >

.number

如果想自动将用户的输入值转为 Number 类型(如果原值的转换结果为 NaN 则返回原值),可以添加一个修饰符 number 给 v-model 来处理输入值:

<input v-model.number="age" type="number">

这通常很有用,因为在 type="number" 时 HTML 中输入的值也总是会返回字符串类型。

.trim

如果要自动过滤用户输入的首尾空格,可以添加 trim 修饰符到 v-model 上过滤输入:

<input v-model.trim="msg">

v-model 与组件

如果你还不熟悉Vue的组件,跳过这里即可。

HTML 内建的 input 类型有时不能满足你的需求。还好,Vue 的组件系统允许你创建一个具有自定义行为可复用的 input 类型,这些 input 类型甚至可以和 v-model 一起使用!要了解更多,请参阅“自定义 input 类型”。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/419148.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

商品库存管理系统【GUI/Swing+MySQL】(Java课设)

系统类型 Swing窗口类型Mysql数据库存储数据 使用范围 适合作为Java课设&#xff01;&#xff01;&#xff01; 部署环境 jdk1.8Mysql8.0Idea或eclipsejdbc 运行效果 本系统源码地址&#xff1a;https://download.csdn.net/download/qq_50954361/87673672 更多系统资源库…

用户信息、账号设置。换做是你会怎么做代码实现?

在网站的应用场景下&#xff0c;对于用户的信息展示与账号设置的都是一个绕不过的问题。解决这个问题&#xff0c;最重要的是&#xff0c;怎么拦截未登录用户进入这个功能内&#xff1f;这就意味着必须在每次动态请求时&#xff0c;校验登录状态以及让请求持有用户&#xff08;…

零入门kubernetes网络实战-28->在同一个宿主机上基于虚拟网桥bridge链接同网段的不同网络命名空间的通信方案

《零入门kubernetes网络实战》视频专栏地址 https://www.ixigua.com/7193641905282875942 本篇文章视频地址(稍后上传) 1、测试环境介绍 一台centos虚拟机 # 查看操作系统版本 cat /etc/centos-release # 内核版本 uname -a uname -r # 查看网卡信息 ip a s eth02、网络拓…

互联网+医疗|如何满足各项安全合规要求

互联网医疗背景下&#xff0c;如何有针对性地规范医疗健康App运营&#xff0c;堵住个人隐私信息安全漏洞&#xff0c;是一个亟待解决的行业问题&#xff0c;也是一个数字时代的公共安全问题。此前&#xff0c;多款医疗健康类App就因过度收集个人信息被监管通报。 与电子商务、…

SDUT操作系统课程(CAST)专题二+专题四参考总结

专题二+进程调度算法 RR q=1(含做题代码) 总结:到达时间一到对应进程进入,执行队首进程一次,对应的服务时间划一记号(推荐用正字),队首进程未执行到完成的话重新进入队尾,队首进程执行到完成的话出队,下一秒继续执行队首进程,当5个进程全部入队之后只要执行后两步操…

5.springcloud微服务架构搭建 之 《springboot集成Hystrix》

1.springcloud微服务架构搭建 之 《springboot自动装配Redis》 2.springcloud微服务架构搭建 之 《springboot集成nacos注册中心》 3.springcloud微服务架构搭建 之 《springboot自动装配ribbon》 4.springcloud微服务架构搭建 之 《springboot集成openFeign》 目录 1.项目…

服务器端渲染技术

文章目录1. JSP基本介绍1.1 JSP快速入门1.2 JSP(Java Server Pages)运行原理1.3 page指令介绍1.4 JSP脚本1.4.1 声明脚本1.4.2 表达式脚本1.4.3 java代码脚本1.5 jsp注释1.6 jsp内置对象1.7 JSP四大域对象1.7.1 域对象实例1.7.2 注意事项1.8 JSP请求转发标签1.9 作业布置2. EL表…

前列腺癌论文笔记

名词解释 MRF: 磁共振指纹打印技术( MR Fingerprinting)是近几年发展起来的最新磁共振技术&#xff0c;以一种全新的方法对数据进行采集、后处理和实现可视化。 MRF使用一种伪随机采集方法&#xff0c;取代了过去为获得个体感兴趣的参数特征而使用重复系列数据的采集方法&…

都抢发AI大模型,谁关注模型安全?

如果要给4月定一个主题&#xff0c;“大模型”应该当仁不让。 从4月7日阿里突然放出“通义千问”内测开始&#xff1b;8日&#xff0c;华为放出盘古大模型&#xff1b;10日&#xff0c;商汤推出类ChatGPT产品“商量SenseChat”&#xff1b;之后&#xff0c;11日的阿里云峰会&am…

数据优化 | CnOpenDataA股上市公司招聘数据

就业是经济的“晴雨表”&#xff0c;更是社会的“稳定器”。稳定和扩大就业一直是国家宏观调控的重要目标&#xff0c;2021年中央经济工作会议八次提到“就业”这一关键词。在新冠肺炎疫情蔓延、世界经济下行及人口老龄化加快等多重因素的叠加之下&#xff0c;稳就业保民生成为…

十、CNN卷积神经网络实战

一、确定输入样本特征和输出特征 输入样本通道数4、期待输出样本通道数2、卷积核大小33 具体卷积层的构建可参考博文&#xff1a;八、卷积层 设定卷积层 torch.nn.Conv2d(in_channelsin_channel,out_channelsout_channel,kernel_sizekernel_size,padding1,stride1) 必要参数&a…

【MySQL--03】表的操作

文章目录1.表的操作1.1创建表1.2创建表案例1.3查看表结构1.4修改表1.5删除表1.表的操作 1.1创建表 语法&#xff1a; CREATE TABLE table_name(filed1 datatype,filed2 datatype,filed3 datatype )character set 字符集 collate 校验规则 engine 存储引擎;说明&#xff1a; …

Redis,Redis Sentinel ,集群

1&#xff1a;由于服务器优先&#xff0c;只能在同一台服务器搭建2个Redis&#xff0c;2个Redis Sentinel&#xff0c;实现Redis的集群 2&#xff1a;Linux上下载Redis&#xff0c;并安装和配置 下载执行一下命令&#xff1a; $ wget http://download.redis.io/releases/redi…

MySQL数据库(Python)

文章目录一、数据库安装&#xff08;Windows版&#xff09;二、数据库概念三、MySQL数据库3.1 数据类型3.2 数据库基本操作&#xff08;windows&#xff09;3.3 数据表的操作3.4 表数据操作四、PyMySQL的使用一、数据库安装&#xff08;Windows版&#xff09; 到mysql数据库官…

MATLAB | R2023a更新了哪些好玩的东西

R2023a来啦&#xff01;&#xff01;废话不多说看看新版本有啥有趣的玩意和好玩的特性叭&#xff01;&#xff01;把绘图放最前面叭&#xff0c;有图的内容看的人多。。 1 区域填充 可以使用xregion及yregion进行区域填充啦&#xff01;&#xff01; x -10:0.25:10; y x.^…

spdk环境搭建

SPDK环境搭建运行环境源码拉取编译增加虚拟盘&#xff0c;运行样例本来21年就写了这篇博客&#xff0c;但因为在博客中放了vmware的密钥&#xff0c;违规了&#xff0c;最近正好又要用到spdk&#xff0c;就重新搭建一下spdk&#xff0c;简单改一下博客再发一遍运行环境 VMware…

Unity云渲染,加移动

上次我们根据官方所推出的教程&#xff0c;完成了云渲染&#xff0c;这次我们加个移动。 原谅我又水一篇文章&#x1f604;&#x1f604;&#x1f604;&#x1f604;&#x1f604;&#x1f604;&#x1f604;&#x1f604;&#x1f604; 云渲染的文章看这里&#xff1a;Unity…

关于nn.CrossEntropyLoss交叉熵损失中weight和ignore_index参数

目录 1. 交叉熵损失 CrossEntropyLoss 2. ignore_index 参数 3. weight 参数 4. 例子 1. 交叉熵损失 CrossEntropyLoss CrossEntropyLoss 交叉熵损失可函数以用于分类或者分割任务中&#xff0c;这里主要介绍分割任务 建立如下的数据&#xff0c;pred是预测样本&#xff…

MongoDB 聚合管道的字段投影($addFields,$set,$unset,$project)

上一篇我们介绍了MongoDB 聚合管道的文档筛选及分组统计&#xff1a; $match&#xff1a;文档过滤 $group&#xff1a;文档分组&#xff0c;并介绍了分组中的常用操作&#xff1a;$addToSet&#xff0c;$avg&#xff0c;$sum&#xff0c;$min&#xff0c;$max等。 如果需要进一…

Ceph集群修复 osd 为 down 的问题

问题描述 由于突然断电了&#xff0c;导致 ceph 服务出现了问题&#xff0c;osd.1 无法起来 ceph osd tree解决方案 尝试重启 systemctl list-units |grep ceph systemctl restart ceph-f0e59898-71d4-11ec-924c-000c290a1a98osd.1.service发现重启无望&#xff0c;可采用…