Vue.js 中的 v-model 指令及绑定表单元素的方法

yizhihongxing

当使用 Vue.js 开发表单时,经常需要将表单元素的值(如文本输入框、单选框、复选框等)与 Vue 组件中的数据进行绑定,这就需要用到 Vue.js 中的 v-model 指令了。下面是具体的操作方法:

绑定文本输入框的值

将文本输入框的值与 Vue 组件中的 data 属性进行双向绑定的方法,示例如下:

在 Vue 组件的 template 中,定义一个文本输入框:

<input type="text" v-model="message">

在 Vue 组件的 data 中,定义一个 message 属性:

data() {
  return {
    message: ''
  }
}

这样,当文本输入框的值发生改变时,Vue 组件中的 message 值也会跟着改变;当 Vue 组件中的 message 值发生改变时,文本输入框的值也会自动更新。

绑定单选框或复选框的值

将单选框或复选框的值与 Vue 组件中的 data 属性进行绑定的方法,示例如下:

在 Vue 组件的 template 中,定义一个单选框或复选框:

<input type="checkbox" v-model="checked">

在 Vue 组件的 data 中,定义一个 checked 属性:

data() {
  return {
    checked: false
  }
}

这样,当单选框或复选框的值发生改变时,Vue 组件中的 checked 值也会跟着改变;当 Vue 组件中的 checked 值发生改变时,单选框或复选框的值也会自动更新。

示例说明

示例一:全选/全不选

<template>
  <div>
    <input type="checkbox" v-model="allSelected"> 全选/全不选
    <ul>
      <li v-for="(item, index) in items" :key="index">
        <input type="checkbox" v-model="item.checked"> {{item.text}}
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      allSelected: false,
      items: [
        {text: '选项1', checked: false},
        {text: '选项2', checked: false},
        {text: '选项3', checked: false},
        {text: '选项4', checked: false}
      ]
    }
  },
  watch: {
    allSelected(val) {
      this.items.forEach(item => {
        item.checked = val
      })
    }
  }
}
</script>

在这个示例中,我们使用了 v-model 指令将“全选/全不选”复选框的值与 Vue 组件中的 allSelected 属性进行绑定,将每个选项的复选框的值与 Vue 组件中的 items 数组中的每一项的 checked 属性进行绑定。

当“全选/全不选”复选框的值发生改变时,使用 watch 监听其变化,并将 items 数组中的每一项的 checked 属性值同步更新。当某个选项的复选框的值发生改变时,其对应在 items 数组中的项的 checked 属性值也会自动更新。

示例二:计数器

<template>
  <div>
    <input type="number" v-model.number="count"> <button @click="add">增加</button>
    <p>当前数量:{{count}}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      count: 0
    }
  },
  methods: {
    add() {
      this.count++
    }
  }
}
</script>

在这个示例中,我们使用了 v-model.number 指令将文本输入框的值与 Vue 组件中的 count 属性进行双向绑定。由于文本输入框的值默认是字符串类型,我们使用 v-model.number 来将其转换成数值类型。

同时,我们绑定了 button 元素的 click 事件,实现了增加计数器的功能。当 count 属性值发生改变时,其所绑定的文本输入框的值也会自动更新。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue.js 中的 v-model 指令及绑定表单元素的方法 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • vue监听用户输入和点击功能

    下面我来分享一下Vue监听用户输入和点击功能的完整攻略。 监听用户输入 当我们需要获取用户在输入框中的输入时,我们可以使用v-model指令,在input或者textarea标签上绑定这个指令,然后就可以获取到用户输入的内容。下面是一个示例: <template> <div> <input v-model="messa…

    Vue 2023年5月29日
    00
  • vue js秒转天数小时分钟秒的实例代码

    下面我将详细讲解“vue js秒转天数小时分钟秒的实例代码”的完整攻略。 1. 实现思路 我们需要先将输入的秒数转换为天数、小时、分钟和秒数,然后将它们展示在页面上。具体的实现思路如下: 在Vue实例中定义一个data属性,来存储输入的秒数以及转换后的天、时、分、秒。 在计算属性中编写相应的转换方法,将秒数转换为天数、小时数、分钟数和余下的秒数。 通过Vue…

    Vue 2023年5月29日
    00
  • vue.js开发环境安装教程

    Vue.js开发环境安装教程 Vue.js是一个用于构建用户界面的渐进式的JavaScript框架。在开始开发Vue.js应用程序之前,必须安装Vue.js开发环境。本文将介绍如何安装Vue.js,以便能够使用该框架构建Web应用程序。 步骤1:安装Node.js Node.js是JavaScript运行时环境。Vue.js需要Node.js才能运行。因此,…

    Vue 2023年5月28日
    00
  • Vue3+Vite实现动态路由的详细实例代码

    下面我来详细讲解“Vue3+Vite实现动态路由的详细实例代码”的完整攻略。 1. Vite项目基础搭建 首先,我们需要创建并启动一个Vite项目。可以使用命令行工具在要创建项目的目录下执行以下命令: npm init vite-app my-project cd my-project npm install npm run dev 上述命令意义分别为:使用…

    Vue 2023年5月28日
    00
  • 浅谈vue项目重构技术要点和总结

    浅谈Vue项目重构技术要点和总结 在Vue项目重构的过程中,需要注意以下几个技术要点: 1. 把公共功能封装成组件 在项目重构的过程中,需要尽量避免重复的代码。因此,我们可以把一些公共的功能封装成组件,供其他地方复用。例如,我们可以封装一个翻页组件,用于多处分页展示。如下所示: <template> <div> <button …

    Vue 2023年5月28日
    00
  • VUE3基础学习之click事件详解

    VUE3基础学习之click事件详解 在Vue.js中,我们经常需要为DOM元素绑定事件,响应用户交互操作。而click事件是最常用的事件之一,本文将介绍在 Vue3 中如何使用 click 事件。 添加点击事件 在Vue3中,可以使用 v-on 指令来绑定 click 事件。例如,将一个按钮与 handleClick 方法绑定: <template&…

    Vue 2023年5月28日
    00
  • vue.js删除列表中的一行

    关于“vue.js删除列表中的一行”的完整攻略,可以分为以下几个步骤: 1. 在Vue中渲染列表 首先,在Vue中渲染出需要删除行的列表。在这个例子中,我们将使用v-for指令循环渲染一个列表,并为每个列表项添加一个删除按钮。 <template> <div> <ul> <li v-for="(item, …

    Vue 2023年5月29日
    00
  • 浅谈Vue为什么不能检测数组变动

    让我们来详细讲解一下为什么 Vue 不能检测数组变动。 为什么 Vue 不能检测数组变动 首先,需要明确的是,Vue 实例在渲染模板时使用的是虚拟 DOM。当响应式属性发生变化时,Vue 会比较新旧虚拟 DOM,然后仅对变化的部分进行重新渲染,这样可以提高性能。 但是,Vue 不能仅凭虚拟 DOM 来判断数组是否发生变化。这是因为 JavaScript 中的…

    Vue 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部