当前位置: 首页 > article >正文

Vue表单绑定入

在开发Web应用时,表单是用户与应用交互的重要方式之一。Vue.js 提供了一种简洁而强大的方法来处理表单输入、输出和事件处理。本文将通过一个简单的示例,介绍如何在Vue中实现表单绑定。

什么是Vue表单绑定?

Vue表单绑定是一种双向数据绑定技术,它允许开发者将表单元素的值与Vue实例的数据属性进行同步。这意味着当用户在表单中输入数据时,Vue实例中对应的数据属性会自动更新,反之亦然。

基本用法

在Vue中,我们使用v-model指令来创建双向数据绑定。以下是一个基本的示例:

<div id="app">
  <input v-model="message">
  <p>Message is: {{ message }}</p>
</div>

在这个例子中,v-model绑定了input元素的值到Vue实例的message属性。当用户在输入框中输入文本时,message的值会实时更新。

修饰符

Vue为v-model提供了几个修饰符,以提供更灵活的表单绑定行为。

  1. .lazy - 在默认情况下,v-model在每次input事件后更新数据。使用.lazy修饰符后,Vue将改为在change事件后更新数据。
<input v-model.lazy="userNameLazy">
  1. .trim - 使用.trim修饰符可以自动过滤用户输入的首尾空白字符。
<input v-model.trim="userNameTrim">

多行文本

对于多行文本输入,我们可以使用textarea元素,并同样使用v-model进行绑定。

<textarea v-model="userContent"></textarea>

复选框和单选按钮

Vue也支持复选框(checkbox)和单选按钮(radio)的绑定。

<input type="checkbox" v-model="selectedSports" value="soccer">Soccer
<input type="checkbox" v-model="selectedSports" value="volleyball">Volleyball
<input type="radio" value="male" v-model="gender">Male
<input type="radio" value="female" v-model="gender">Female

在这个例子中,selectedSports是一个数组,它将包含所有被选中的复选框的值。而gender则是一个字符串,它将包含被选中的单选按钮的值。

下拉选择框

对于下拉选择框(select),我们同样使用v-model来绑定选中的选项。

<select v-model="selectedOption">
  <option value="option1">Option 1</option>
  <option value="option2">Option 2</option>
  <option value="option3">Option 3</option>
</select>

selectedOption将包含被选中的option的值。

完整示例

下面是一个完整的Vue表单绑定示例,它展示了上述所有特性:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Vue Form Binding Example</title>
    <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script> 
</head>
<body>
<div id="Application">
    <input v-model="userName">
    <p>Username: {{userName}}</p>
    <input v-model.lazy="userNameLazy">
    <p>Username (lazy): {{userNameLazy}}</p>
    <input v-model.trim="userNameTrim">
    <p>Username (trim): {{userNameTrim}}</p>
    <textarea v-model="userContent"></textarea>
    <p style="white-space: pre-line">Content: {{userContent}}</p>
    <input type="checkbox" v-model="selectedSports" value="soccer">Soccer
    <input type="checkbox" v-model="selectedSports" value="volleyball">Volleyball
    <input type="checkbox" v-model="selectedSports" value="basketball">Basketball
    <p>Selected Sports: {{selectedSports}}</p>
    <input type="radio" value="male" v-model="gender">Male
    <input type="radio" value="female" v-model="gender">Female
    <p>Gender: {{gender}}</p>
    <input type="radio" value="22" v-model="userAge">22
    <input type="radio" value="23" v-model="userAge" checked>23
    <p>Age: {{userAge}}</p>
    <select v-model="selectedOption">
        <option value="option1">Option 1</option>
        <option value="option2">Option 2</option>
        <option value="option3">Option 3</option>
    </select>
    <p>Selected Option: {{selectedOption}}</p>
</div>
<script>
    const App = {
        data() {
            return {
                userName: "",
                userNameLazy: "",
                userNameTrim: "",
                userContent: "",
                selectedSports: [],
                gender: "",
                userAge: 23,
                selectedOption: ""
            };
        }
    };
    Vue.createApp(App).mount("#Application");
</script>
</body>
</html>

通过这个示例,你可以看到Vue表单绑定的强大之处。它不仅简化了数据与视图的同步,还提供了丰富的功能来满足各种表单需求。


http://www.kler.cn/a/415123.html

相关文章:

  • 将excel文件中的信息读取后批量生成word文件
  • 【Linux】剧幕中的灵魂更迭:探索Shell下的程序替换
  • Asp.net core Autofac 案例 注入、AOP 启用接口代理拦截 启用 类代理拦截=== 只会拦截虚方法
  • Java代码操作Zookeeper(使用 Apache Curator 库)
  • Airsim安装问题:This project was made with a different version of the Unreal Engine.
  • 基础入门-Web应用架构类别源码类别镜像容器建站模版编译封装前后端分离
  • 【GPT】为什么要力量训练?
  • 使用easyexcel导出复杂模板,同时使用bean,map,list填充
  • MT管理器v2.14.5-MT管理器-能强大的Android文件管理工具,主要用于管理和编辑手机中的文件-MT管理器vip版本下载-登录即可有vip
  • 02.ES6(2)
  • docker-elasticsearch-kibana-logstash
  • Vue Promise的使用,界面使用异步线程循环执行方法(模拟线程)
  • Java基础面试题08:Java中Exception和Error有什么区别?
  • IDEA如何快速地重写方法,如equals、toString等
  • Sybase数据恢复—Sybase数据库无法启动,Sybase Central连接报错的处理案例
  • 反向代理服务器的用途
  • uniapp关闭sourceMap的生成,提高编译、生产打包速度
  • 如何配置 Gitea 的邮箱功能
  • React Native 原生开发指南
  • MySQL并发事务问题和隔离级别
  • Ubuntu 18.04 中安装 RDKit(针对 Python 2.7)
  • vim 显示行数和删除内容操作
  • C# 预处理器指令
  • SpringMVC前后端数据交互
  • VM Virutal Box的Ubuntu虚拟机与windows宿主机之间设置共享文件夹(自动挂载,永久有效)
  • Leetcode124. 二叉树中的最大路径和(HOT100)