v-model的原理+使用方法

news/2024/7/10 3:06:36 标签: vue

一:什么是v-model?

v-model就是vue的双向绑定的指令,能将页面上控件输入的值同步更新到相关绑定的data属性,也会在更新data绑定属性时候,更新页面上输入控件的值。

二:原理

v-model其实是一个语法糖
背后包含两个操作

v-bind动态绑定一个value属性
v-on给当前元素绑定input事件
也就是说以下两段代码等价

<input type="text" v-model="message">
<!--等同于下面-->
<input type="text"
	   v-bind:value="message"
	   v-on:input="message=$event.target.value">

具体·例子如下:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <div id="app">
            <!-- v-model="变量" 实现双向数据绑定
                给表单元素,增加v-model 表单的值变化,变量也会有变化 。变量有变化,表单的值也会有变化
            -->
            <input type="text" v-model="msg">
            {{msg}}
            <button v-on:click="change()">按钮</button>
        </div>

        <script src="js/vue.js"></script>
        <script>
            new Vue({
                el:'#app',
                data:{
                    msg:'hello'
                },
                methods:{
                    change(){
                        // 修改msg的值
                        this.msg=this.msg+'阿'
                    }
                }
		
            })
        </script>
    </body>
</html>

三:使用方法+注意事项

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

v-model 在内部为不同的输入元素使用不同的属性并抛出不同的事件:
text 和 textarea 元素使用 value 属性和 input 事件;
checkbox 和 radio 使用 checked 属性和 change 事件;
select 字段将 value 作为 prop 并将 change 作为事件。


http://www.niftyadmin.cn/n/1521010.html

相关文章

【SpringBoot】Web开发——设置网页图标Favicon

将一个名为favicon.ico的文件放在默认路径下即可自动访问。 结果&#xff1a; Tips 测试时发现太大的图片无法成功显示 同时即使在后端修改了图标显示&#xff0c;但是如果网页有缓存则无法正常显示&#xff0c;需要禁用缓存。

两个页面传参实现的几种方法

1.使用window.name: a页面&#xff1a; <script> window.name123; </script>b页面&#xff1a; <script> console.log(window.name); </script>2.使用h5中的localStorage: a页面&#xff1a; <body> <a href"22.html">defsdf…

【SpringBoot】Web开发——Rest请求

1.请求映射 在做所有Web开发之前&#xff0c;编写一个RestController代码&#xff0c;在所有的方法前面使用RequestMapping 注解说明此方法能处理什么请求&#xff0c;这个过程称为请求映射。 2.Rest风格 Rest风格支持&#xff08;使用HTTP请求方式动词来表示对资源的操作&a…

小程序中的navigator 跳转方式

navigator中的open-type可以决定小程序的跳转方式&#xff1b; 是否关闭当前页面 或者说以何种方式进行跳转标签<navigator>中 open-type属性表示小程序的跳转方式&#xff1b;open-typeredirectToopen-typenavigateTo还有其他的跳转方式地址&#xff1a; https://develo…

OkHttp 里面配置 HTTP Basic Auth

https://blog.csdn.net/qq_17775871/article/details/80761961

vue同级组件间传值

1&#xff0c;1&#xff0c;在main.js同级 目录下新建eventBus.js文件 import Vue from "vue" export default new Vue()2&#xff0c;在组件a中传出值 首先我们需要引入我们新创建的eventBus.js文件&#xff0c;通过$emit传值 <template><div class"…

javascript计算1-10000中0出现的次数,怎么写?

一个小算法题&#xff1a;用javascript计算1-10000中0出现的次数&#xff0c;我用循环写了一个方案&#xff0c;代码如下&#xff1a; function getZeroCount(num) {let count0;let regObj/0/g;for (let i1;i<num;i){let stri;let matchstr.match(regObj);countmatchnull?…