需求:当自定义tabBar其中一个tab被点击时,显示另外一个自定义组件A。
思路:通过在page.wxml中添加wxs模块,监听tabBar的prop,以触发A组件的显示。
问题:wxs监听事件无法被触发。
// custom-tab-bar.js
Component({
data:{showStudioMenu:false},
methods:{
whenTap:function(){this.setData({showStudioMenu:true})}
}
})
// custom-tab-bar.wxml
<view change:showStudioMenu="{{sm.propObserver}}" >
<view wx:for="{{normal}}" wx:key="index" id="{{index}}" bindtap="whenTap" >
<image src="{{item}}" />
</view>
</view>
// page.wxml
<wxs module="sm">
var propObserver = function (nv,v,oi,i) {
console.log("sm.propObserver被执行"); // 不执行...
console.log(nv,v,oi,i); // 不执行...
}
module.exports.propObserver = propObserver
</wxs>
---------------------------------
总结:
1、tabBar和页面是兄弟。
2、两兄弟如果一定要通信,page里用getTabBar()后setData(),tabBar里用getCurrentPages()后setData()。
网友回复
武曲心:
你这写法是官方的么?感觉你学的知识是拼凑出来的,再翻一下文档看下吧