Skip to content

Conversation

begoat
Copy link

@begoat begoat commented Sep 30, 2019

如果在ready之前调用(可能是通过property的observe函数触发)
会导致selectorQuery canvas节点返回null后续取width、height直接报错,

@Ovilia
Copy link
Member

Ovilia commented Sep 30, 2019

感谢贡献,请问可以提供一个测试 case 吗?

@begoat
Copy link
Author

begoat commented Sep 30, 2019

@Ovilia Hi,通过小程序的code snippet 做了个demo会产生报错,
不过基础库版本切换到 2.8.0就不会报错,不知道为什么会这样。

描述下问题:
针对echarts封装了一个 echarts-base 处理所有图表通用的需求,比如因为canvas是原生组件,会出现在所有的组件之上,为了解决这个问题,组件得有一个图片模式,所以把这个组件封装一层,接受option。

然后 lazyload-demo 组件是demo图表的组件,引用了echarts-base,定义了一些我需要图的样式的option,然后接受 数据参数 作为property,一旦这个数据参数变化,更新option 然后触发 charts-base 的更新。

一开始lazyLoad-demo组件给到 charts-base的option 不是空,而是option里面的data为空,跟默认值空不同,会触发一次更新,这个过程 charts-base 还没有ready,所以选择器选择不到会报错。

当然这个是有一些方法避免的,但我觉得问题的本质是 允许 在ready前调用了init,导致没拿到UI数据,所以我觉得改ec-canvas.js 比较合理。

https://developers.weixin.qq.com/s/9jB3ILm37tb2

麻烦看下

@lyj0158
Copy link

lyj0158 commented Mar 16, 2023

解决了吗

@begoat
Copy link
Author

begoat commented Mar 18, 2023

解决了吗

印象中没解决,绕过去了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants