mall-cook实现流程-怎么实现一个diy|diy的详细步骤|记录使用diy【第二篇:Control的实现】

介绍:第一篇中我们成功导出了,自定义组件的JSON数据,那么接下来我们再Control中把这些数据实现为组件并且去使用它。

1.在widgets新建一个文件夹(名称要统一),文件夹下面有一个.json文件和.vue文件;
2.把schema中生成的json放入此文件;
3.vue文件就是要在移动端显示的组件,接收到.json文件后.vue要显示出来。
在这里插入图片描述
因为我是把它内嵌到了我们的管理后台,我们的管理后台和移动端是分开的,对应这里就有两个widgets,管理后台一个,移动端一个;
在这里插入图片描述
每次添加新的组件后,移动端那边也要添加(复制过去就行)
注意:这里我们用的mall-cook是未分离的,在mall-cook中因为没有分离所以mall-cook中没有两个widgets文件

接下来,我们来一步一步分析是怎么实现Control

这就是实现diy的页面,最终diy页面会这里被设置出来
在这里插入图片描述
Control文件下面的index就是diy的设置页面了
在这里插入图片描述
对应
在这里插入图片描述
我们先看左侧
在这里插入图片描述
这里面的 v-for="(item, index) in i n i t i a l i z i n g " , initializing", initializing"initializing怎么获取的?
在这里插入图片描述
左侧拖拽过去,是怎么在中间显示的呢?
在这里插入图片描述
我们看中间是什么?这内嵌了一个ifarame!
这里就和schema生成器里面的就不同了,schema里的中间也是draggable,两个draggable同名传递数据。
在这里插入图片描述
怎么和内嵌的ifarame通信呢?这里就要用到专门处理 跨域/跨窗口通信 的一个widow的api了【postMessage】
在这里插入图片描述
内嵌的iframe会接收数据,这里我们这一篇暂不分析(下图:mall-cook移动端代码)
(所以这里必须要先,启动mall-cook的移动端,然后在管理后台通过接口获取iframe的url)
在这里插入图片描述
中间显示出来后,选择组件
在这里插入图片描述
管理后台会接收,从iframa发送过来的数据
在这里插入图片描述
然后显示右侧对应的内容
在这里插入图片描述
右侧对应的组件就是,第一篇schema的center中显示的组件;
这里会,显示接收iframe到json中存在的组件,遍历显示出来
在这里插入图片描述
右侧修改数据,中间是怎么同步变化的呢?
在这里插入图片描述
schema的center中显示的组件这里是混入,修改组件内容时会通过 this.$emit(‘input’, this.mValue)传给父组件,让父组件同步变化
在这里插入图片描述

在这里插入图片描述
父组件会通过 v-model="control.curWidget"接收,子组件通过 this. e m i t ( ′ i n p u t ′ , t h i s . m V a l u e ) t h i s . emit('input', this.mValue) this. emit(input,this.mValue)this.emit(‘change’, this.mValue) 传过来的值。
。。。
因为有依赖注入,中间会同步更新control数据,会被中间的watch监听到,然后会通过跨窗口通信传递给iframe
在这里插入图片描述
然后再就是保存数据
在这里插入图片描述
通过接口保存数据之后,在移动端调用接口-获取保存数据,然后再显示对应的组件就可以啦~
在这里插入图片描述
在这里插入图片描述

中间这里是用的iframe,其实这里也可以用两个draggable像schema生成器中的一样,

这样就不需要先启动移动端,拿iframe的url了。

因为有回显功能,原来设置的diy去编辑的时候用iframe就比较简单,

如果是两个draggable的话,就需要先通过接口拿原来设置的diy,然后回显到中间模块。

各有各的好处吧,看需求去实现。

去看第一篇

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值