vue2学习笔记5 - 表单类元素的单向数据绑定和双向数据绑定

前言

上一节我们学到,可以通过v-bind:指令,将标签体属性值通过js表达式绑定到vue实例中的某data上,读取该data数据,并通过vue模板中指定的页面元素,展示在页面上。

但是,我们在使用网页表单的时候,一定遇到过需要用户从页面上某输入框输入值,然后将其值保存到后台的操作。那么,v-bind可以实现从页面元素获取用户输入,然后更新vue实例data中的数据么?

答案是不能,v-bind只能实现从vue实例data读取数据展示到页面上的功能。这种反向需求,或者说双向传递数据的需求,我们需要用另一个指令:v-model,来实现双向绑定。

示例代码:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8" />
        <title>数据绑定</title>
        <!--引入vue.js,则全局就会多了一个vue的构造函数-->
        <script type="text/javascript" src="../js/vue.js"></script>
    </head>
    <body>
        <!--准备一个容器-->
        <div id="root">
            <!--添加想要展示的内容:文本插值, js表达式, 读取data中的数据-->            
            单向数据绑定v-bind:<input type="text" v-bind:value="name"><br/>
            双向数据绑定v-model:<input type="text" v-model:value="name2">           
        </div>
        <script type="text/javascript" >
            Vue.config.productionTip = false //阻止 vue 在启动时生成生产提示
            const vm = new Vue({
                el:'#root',         //为当前Vue实例绑定容器,这里使用了css selector,绑定了id=‘root’的元素
                data:{              //存储数据,供el所绑定的容器所使用
                    name:'飞鸟',
                    name2:'不喜欢就不理会'                   
                }
            })            
        </script>
    </body>
</html>

通过live server运行后,我们通过vue2学习笔记1-官网使用指南和搭建开发环境中所安装的vue插件来查看vue实例中的数据变化:

初始状态

页面元素两个input分别展示了data中两个变量的值。不论是v-bind还是v-model,都实现了从data到页面的单向传递。

页面到data传递

下面,我们从页面输入框输入一些字符,观察data中两个变量的变化:

可以看到,当我们在页面上输入字符的时候,name没有变化,而使用v-model的name2,data中的值会实时刷新。

data到页面传递

我们再从vue data中修改name和name2的值,然后分别点击后面的保存按钮:

可以看到,页面input中的值,同步更新。

总结

也就是说,使用v-model的input,实现了从vue模板与vue实例间的双向数据绑定。

而v-bind,只能实现从data到页面的单向传递。

但是,v-model也不是在任何地方都可以使用,它只能用于表单类元素(输入类元素)中,捕获用户输入,实现数据的双向传递。

输入类元素包含:input,单选,多选、select控件、多行文本输入框等拥有value属性值的元素。所以,v-model:value也可以简写为v-model,因为v-model默认收集的就是value的值。

以下为v-bind和v-model的简写方式:

单向数据绑定v-bind:<input type="text" :value="name"><br/>
双向数据绑定v-model:<input type="text" v-model="name2"> 

相关推荐

  1. Vue 数据双向 v-mode

    2024-07-15 18:56:03       42 阅读
  2. Angular中单向双向数据

    2024-07-15 18:56:03       51 阅读
  3. Vue 双向数据

    2024-07-15 18:56:03       39 阅读
  4. Vue双向数据原理

    2024-07-15 18:56:03       61 阅读
  5. vue2 双向数据实现及原理

    2024-07-15 18:56:03       27 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-15 18:56:03       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-15 18:56:03       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-15 18:56:03       57 阅读
  4. Python语言-面向对象

    2024-07-15 18:56:03       68 阅读

热门阅读

  1. Photoshop中的前景色和背景色

    2024-07-15 18:56:03       17 阅读
  2. [终端安全]-8 隐私保护和隐私计算技术

    2024-07-15 18:56:03       18 阅读
  3. Go协程与通道的综合应用问题

    2024-07-15 18:56:03       23 阅读
  4. 【ROS2】测试

    2024-07-15 18:56:03       21 阅读
  5. 「Conda」在Linux系统中安装Conda环境管理器

    2024-07-15 18:56:03       18 阅读
  6. Python学习的第一天7.15

    2024-07-15 18:56:03       24 阅读
  7. 动态内存管理(C)

    2024-07-15 18:56:03       23 阅读
  8. 算法的时间复杂度和空间复杂度-概念

    2024-07-15 18:56:03       19 阅读
  9. Matlab

    Matlab

    2024-07-15 18:56:03      20 阅读