博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vue2.X props 数据传递 实现组件内数据与组件外的数据的双向绑定
阅读量:7282 次
发布时间:2019-06-30

本文共 1366 字,大约阅读时间需要 4 分钟。

vue2.0 禁止 子组件修改父组件数据

在Vue2中组件的props的数据流动改为了只能单向流动,即只能由组件外(调用组件方)通过组件的DOM属性attribute传递props给组件内,组件内只能被动接收组件外传递过来的数据,并且在组件内,不能修改由外层传来的props数据

 

在Vue2.0中,实现组件属性的双向绑定方式

1. 在组件内的data对象中创建一个props属性的副本

 因为result不可写,所以需要在data中创建一个副本myResult变量,初始值为props属性result的值,同时在组件内所有需要调用props的地方调用这个data对象myResult

Vue.component("switchbtn", {    template: "
{
{myResult?'开':'关'}}
", props: ["result"], data: function () { return { myResult: this.result//data中新增字段 }; }, ......});

 

2. 创建针对props属性的watch来同步组件外对props的修改

此时在组件外(父组件)修改了组件的props,会同步到组件内对应的props上,但是不会同步到你刚刚在data对象中创建的那个副本上,所以需要再创建一个针对props属性result的watch(监听),当props修改后对应data中的副本myResult也要同步数据。

Vue.component("switchbtn", {    template: "
{
{myResult?'开':'关'}}
", props: ["result"], data: function () { return { myResult: this.result }; }, watch: { result(val) { this.myResult = val;//新增result的watch,监听变更并同步到myResult上 } }, ......

 

3. 创建针对props副本的watch,通知到组件外

此时在组件内修改了props的副本myResult,组件外不知道组件内的props状态,所以需要再创建一个针对props副本myResult,即对应data属性的watch

在组件内向外层(父组件)发送通知,通知组件内属性变更,然后由外层(父组件)自己来变更他的数据

 

最终全部代码:

 

	
Document

 

至此,实现了组件内数据与组件外的数据的双向绑定,组件内外数据的同步。最后归结为一句话就是:组件内部自己变了告诉外部,外部决定要不要变

.

 

转载于:https://www.cnblogs.com/crazycode2/p/7616399.html

你可能感兴趣的文章
自动复制转换StringBuffer
查看>>
【linux】linux shell 日期格式化
查看>>
Android改变图片颜色的自定义控件
查看>>
【Todo】OSGi学习
查看>>
MyBatis入门学习教程-优化MyBatis配置文件中的配置
查看>>
JS优秀资源站点收集
查看>>
15 个 Android 通用流行框架大全
查看>>
001_Mac键盘图标与对应快捷按键标志汇总
查看>>
join用法
查看>>
spark textFile 困惑与解释
查看>>
除了首付,购房预算还须有这7项才能买到房!
查看>>
Dynamic attention in tensorflow
查看>>
python中的三元运算
查看>>
Swift:宏定义
查看>>
Linux(Ubuntu12.04)上玩儿STC单片机(转)
查看>>
Heroku免费版限制
查看>>
Struts2拦截器
查看>>
jQuery的$.extend和$.fn.extend作用及区别
查看>>
[C#] async 的三大返回类型
查看>>
数据结构之---C语言实现图的邻接表存储表示
查看>>