我的canvas被包含在了一个二级引用的组件内,在页面上的嵌套顺序如下:
page-->组件1-->组件2(包括一个slot)-->canvas(在slot中)
组件2的wxml文件如下图:
在组件2的js,以及运行情况如下:
根据微信开发文档,在组件中select节点时,需要把wx.createSelectorQuery换成this.createSelectorQuery,于是,我用后者的方法创建了一个selectorQuery,并执行后面的函数。运行时,却返回了null值。
有大神知道这是怎么个情况吗?另外,我用wx.createSelectorQuery也试过,结果一样。。。
谢邀 :
组件里要加上in
SelectorQuery | 微信开放文档
https://developers.weixin.qq.com/miniprogram/dev/api/wxml/SelectorQuery.in.html
补充:我没看代码,刚才开始看你代码了
你应该是id="xxx"而不是canvas-id="xxx"
网上查了一下出现null的原因,主要要注意的,就是1.组件内节点需要在查询时用in(this);2.注意在页面渲染完成后去获取。
所以我试过wx.create~~Query().in(this),也试过this.create~~Query(),也试过this.create~~Query(),都是null...同时,也加上了setInterval,等页面节点树渲染完成后,延迟获取我想要的节点,也是null。。。。
实在不知道是出了什么问题
正是因为没办法,我才用了setInterval函数,延后调用。我看到界面都已经完整的出来了,可调用结果还是Null
你应该是id="xxx"而不是canvas-id="xxx"
改成id就对了,一次过。。。
谢谢你的回复。另外想问一下,canvas的type属性,2d、webgl有什么区别?
刚刚我用这段代码,报了一个错(图1),界面上绘制的结果是这样的(图2)。
之前我用createCanvasContext获取上下文后,用同样的代码没有报错,每次draw之前也会把canvas清空,但用这个type=2d后,draw函数就报错,是有什么原因吗?不知道哪里有相关的资料可以看?
有用
我也是没把canvas-id改为id,找了好久
还是不知道怎么用?返回的Canvas对象不应该元素本身吗?