【Vue】基础系列(二)数据绑定 - el和data - 数据代理
一、数据绑定
- 单向绑定(v-bind):数据只能从data流向页面。
- 双向绑定(v-model):数据不仅能从data流向页码,还可以从页面流向data。
单向数据绑定:<input type="text" v-bind:value="name"><br> 双向数据绑定:<input type="text" v-model:value="name"><br>
注意:v-model只能应用在表单类元素(输入类元素)上,不是什么元素可以用v-model的。且v-model:value可以简写为v-model,因为v-model默认收集的就是value值。
<!-- 简写 --> 单向数据绑定:<input type="text" :value="name"><br> 双向数据绑定:<input type="text" v-model="name"><br>
二、el和data的两种写法
- 代码片段:用于自定义快捷输入。通过设置->用户代码片段->编写代码的方式生成。
{ "newVue":{ "prefix": "vue", "body": [ "new Vue({", " el:'$1',", " data:{", " name:'$2'", " }", "})" ], "description": "vue" } }
- el的两种写法:
- new Vue时候配置el属性。
- 先创建Vue实例,随后再通过vm.$mount("#root")指定el的值。
const v = new Vue({ // el:"#root", data:{ name:"饭啊饭" } }) console.log(v); v.$mount("#root")
- data有两种写法
- 对象式
- 函数式
new Vue({ el:'#root', // data:{ // name:'饭啊饭' // } data:function(){ return{ name:"饭啊饭" } } })
目前写哪种都可以,但以后学习了组件时,data必须使用函数式,且函数一定不要写箭头函数,一旦写了箭头函数,this就不再是Vue实例了。
三、数据代理
- Object.defineProperty相关知识
Object.defineProperty()的作用就是直接在一个对象上定义一个新属性,或者修改一个已经存在的属性。
- value:控制属性的值。
-
enumerable:控制属性是否可枚举。
-
writable:控制属性是否可修改。
-
configurable:控制属性是否可以被删除。
- get():当有人读取person的age属性时,get函数就会被调用,且返回值就是age的值。
- set():当有人修改person的age属性时,set函数就会被调用,且会收到修改的具体值。
Object.defineProperty(person,'age',{ value:"18", enumerable:true, //控制属性是否枚举 writable:true,//控制属性是否可修改 configurable:true;//控制属性是否可以被删除 //当有人读取person的age属性时,get函数就会被调用,且返回值就是age的值 get(){ return number }, //当有人修改person的age属性时,set函数就会被调用,且会收到修改的具体值 set(value){ console.log('有人修改了age属性,且值是value'); number = value } })
- 什么是数据代理:通过一个对象代理对另一个对象中属性的操作(读/写)。
- Vue中的数据代理:Vue中对于data的使用包括了数据代理,知道了原理,具体什么时候会用到在后续博客中标注。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix