uni-app echarts与renderjs通信 renderjs无法获取echarts内部function的引用

公司用uni-app做的echarts,本以为直接从pc端代码复制过来就可以了,不出来是一个问题,出来了格式不对又是一个问题,毕生所学都学以致用了,我可真是个菜比。

菜话不多说。

这里是uni-app app端用echarts的官方教程,bug很多,咱也没办法,入了坑就只能用。
如果是循环echarts的话,可以把官方示例封装成组件,在组件初始化dom,外部只需要传入option和id。

遇到的难题如下:(下面有一句话错误,js垃圾回收对它是有办法的,和其他没有通过eval创建的代码一样,只不过动态作用域不好理解,对我们这种新手不友好。)
在这里插入图片描述
头疼的厉害,这几天看美剧良医,总感觉因为写代码长了个脑瘤,真难受。希望所有写代码的人都能够不急不慌,健健康康,睡饱吃香,没有痔疮。好朴实的愿望。

这是转换代码,不是纯工具函数,所以根据自己的项目自行修改。

	/* 如果有函数则转字符串,并加标识符 */
	const json = (obj) =>  {
		for(let i in obj) {
			if (typeof obj[i] === 'object') {
				json(obj[i])
			} else if(typeof obj[i] === 'function' && i !== 'handleAction'){
				obj[i] = obj[i].toString() + '$func$tion$'
			}
		}
		return obj
	}

	/* 解析字符串函数,创建动态作用域并改变this指向 */
	const parse = (obj) => {
        for(let i in obj) {
            if (typeof obj[i] === 'object') {
                parse(obj[i])
            } else {
                if (typeof obj[i] === 'string' && obj[i].includes('$func$tion$')) {
					var a 
					obj[i] = obj[i].replace(/\$func\$tion\$/g, '')
					obj[i] = eval('a =' + obj[i])
					if (obj['datas']) {
						obj[i] = obj[i].bind(obj['datas'])
					} 
                }
            }
        }
        return obj
	}

我写了一个示例项目,放在github上。
https://github.com/Jkssns/echarts-template

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值