onLoad: function(){ this .barComponent = this .selectComponent( '#barDom' ); console.log( this .selectComponent( '#barDom' )) this .lineComponent = this .selectComponent( '#lineDom' ); this .pieComponent = this .selectComponent( '#pieDom' ); }, |
<ec-canvas id="lineDom" canvas-id="line" ec="{{ecLine}}"></ec-canvas> <ec-canvas id="barDom" canvas-id="bar" ec="{{ecBar}}"></ec-canvas> <ec-canvas id="pieDom" canvas-id="pie" ec="{{ecPie}}"></ec-canvas> |
早上还可以取到barComponent 下午的时候就报null
如果使用 wx:if 控制组件的展示与隐藏,在wx:if = false时,this.selectComponent() 获取到值是null。
usingComponents设置了么
"usingComponents": {
"ec-canvas": "../../ec-canvas/ec-canvas"
}
放到生命周期 onReady 函数里面, onLoad 的时候页面结构还没完全加载进来。
遇到很离谱的问题,新建的组件怎么获取都是null,旧组件就可以了,搞了半天,重新启动项目就可以获取了(重新编译无效、重新编译无效、重新编译无效)
我跟你遇到的问题一样,我的问题解决方案就是去掉虚拟组件设置就可以了
options:{ styleIsolation:"apply-shared", //"isolated", //virtualHost: true },
.json文件的格式不对也会导致这个问题。
正确的格式内容如下:
{ "usingComponents": { "pwddialog":"../components/pwddialog/pwddialog" }
}
onLoad中好像是有时会遇到组件没有完成初始化的情况
楼主解决了吗
因为太长没解决方案就直接没有使用selectcomponent了,可能是像楼下的说的onLoad的时候加载可能没加载完读取不到组件吧。你可以试一下把那个selectcomponent放在onReady里面去获取。