小程序开发中,大部分数据是通过接口请求拿到的。直接通过父子传值的话,是拿不到任何数据的。这时候要想使用异步数据,就需要花点心思了。

(1)如果数据不需要处理的话,那就在子组件中要添加一个判断,保证有数据再开始渲染。

<view class="card_wrap" wx:if="{{ cardData != null }}">
// 这里是子组件代码
</view>

(2)如果父组件传过来的数据需要处理,因为父组件向子组件传递一个异步的数据,那么通过 ready 生命周期是拿不到值的,这时候就用到了 properties 的 observer 属性,监听到值变化的时候再去取值。

properties: {
cardData: {
type: Object,
observer: function(e){
console.log('aaaaaaaaaaaaaa', e)
}
}
},

当然还可以用另一种监听数据变化的方法:

lifetimes: {
ready: function() {
console.log(this.data.cardData) // 取不到值
}
},
observers: {
'cardData': function() {
console.log(this.data.cardData) // 这样就可以取到异步的值
}
}