收藏
回答

为什么无法在组件内使用selectorQuery获取canvas节点?

我的canvas被包含在了一个二级引用的组件内,在页面上的嵌套顺序如下:

page-->组件1-->组件2(包括一个slot)-->canvas(在slot中)

组件2的wxml文件如下图:

在组件2的js,以及运行情况如下:

根据微信开发文档,在组件中select节点时,需要把wx.createSelectorQuery换成this.createSelectorQuery,于是,我用后者的方法创建了一个selectorQuery,并执行后面的函数。运行时,却返回了null值。

有大神知道这是怎么个情况吗?另外,我用wx.createSelectorQuery也试过,结果一样。。。


回答关注问题邀请回答
收藏

2 个回答

  • Admin²⁰²⁰
    Admin²⁰²⁰
    04-20

    谢邀 :

    组件里要加上in

    SelectorQuery | 微信开放文档

    https://developers.weixin.qq.com/miniprogram/dev/api/wxml/SelectorQuery.in.html


    补充:我没看代码,刚才开始看你代码了

    你应该是id="xxx"而不是canvas-id="xxx"

    04-20
    有用 4
    回复 9
    • 张翼.Tophy
      张翼.Tophy
      04-20
      还是一样。。。
      网上查了一下出现null的原因,主要要注意的,就是1.组件内节点需要在查询时用in(this);2.注意在页面渲染完成后去获取。
      所以我试过wx.create~~Query().in(this),也试过this.create~~Query(),也试过this.create~~Query(),都是null...同时,也加上了setInterval,等页面节点树渲染完成后,延迟获取我想要的节点,也是null。。。。
      实在不知道是出了什么问题
      04-20
      1
      回复
    • Admin²⁰²⁰
      Admin²⁰²⁰
      04-20回复张翼.Tophy
      哦,你这个提醒了我。你在onReady里调用。没渲染完成就调用是获取不到的
      04-20
      回复
    • 张翼.Tophy
      张翼.Tophy
      04-20回复Admin²⁰²⁰
      我把onLoad/onReady/attached/ohShow几个生命周期事件都试遍了。。一样。
      正是因为没办法,我才用了setInterval函数,延后调用。我看到界面都已经完整的出来了,可调用结果还是Null
      04-20
      回复
    • Admin²⁰²⁰
      Admin²⁰²⁰
      04-20回复张翼.Tophy
      我没看代码,刚才开始看你代码了
      你应该是id="xxx"而不是canvas-id="xxx"
      04-20
      1
      回复
    • 张翼.Tophy
      张翼.Tophy
      04-20回复Admin²⁰²⁰
      得。。。。和createCanvasContext函数要求搞混了。
      改成id就对了,一次过。。。
      谢谢你的回复。另外想问一下,canvas的type属性,2d、webgl有什么区别?
      刚刚我用这段代码,报了一个错(图1),界面上绘制的结果是这样的(图2)。
      之前我用createCanvasContext获取上下文后,用同样的代码没有报错,每次draw之前也会把canvas清空,但用这个type=2d后,draw函数就报错,是有什么原因吗?不知道哪里有相关的资料可以看?
      04-20
      1
      回复
    查看更多(4)
  • 鲜羊奶哇,真好喝18706122823
    鲜羊奶哇,真好喝18706122823
    06-25

    还是不知道怎么用?返回的Canvas对象不应该元素本身吗?

    06-25
    有用
    回复
登录 后发表内容
问题标签