小程序中使用components方法selectComponent遇到的坑 返回为null
前言:哎呦气死了,小程序等着发布审核得时候 发现了一个bug,selectComponent获取不到组件了,返回值一直为null
原因居然是因为 wx:if , 代码如下,无论if是true还是false 都获取不到组件,去掉wx:if 就可以了 记录一下 希望大家可以避开,网上百度了一下,很少这个问题得记录。
<view class="address" hover-class="none" hover-stop-propagation="false" wx:if="{{detailData.status == 'ONLINE'}}">
<span class="van-row-label">送至</span>
<span class="address-info" bindtap="selectAddress">{{addressValue === '' ? '请选择收货地址+' : addressValue}}</span>
<selectAddress id="selectAddress-modal" bind:getSelectedAddress="getSelectedAddress"></selectAddress>
</view>
那就顺便记录一下,如何获取组件吧。
- json 文件中引入了该组件
{ "usingComponents": { "selectAddress":"../../../components/selectAddress/selectAddress" } }
- 父组件
wxml
文件中使用了这个组件并且设置了一个id
或者是class
类样式 (我下面都是用id class也是一样的和样式命名方式一样)
<selectAddress id="selectAddress-modal"></selectAddress>
- 父组件
js
文件中传递了正确的选择器获取子组件对象
Page({ onReady(){ //onReady或者 onLoad里面先取值都是可以的 // (大坑)切记下面参数不能传递标签选择器(selectAddress),不然返回的同样是 null this.selectAddressModal = this.selectComponent("#selectAddress-modal"); } })