收藏
回答

【已解决】自定义tabBar无法触发页面wxs的prop监听事件?

需求:当自定义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()。

最后一次编辑于  2022-04-28
回答关注问题邀请回答
收藏

1 个回答

  • 武曲心
    武曲心
    2022-04-28

    你这写法是官方的么?感觉你学的知识是拼凑出来的,再翻一下文档看下吧

    2022-04-28
    有用 1
    回复 15
    • 从君华
      从君华
      发表于移动端
      2022-04-28
      按照文档来的,方便的话麻烦指教一下:如何在自定义tabBar实例和页面实例间通信?
      2022-04-28
      回复
    • 武曲心
      武曲心
      2022-04-28回复从君华
      自己看看和文档有何不同
      2022-04-28
      回复
    • 武曲心
      武曲心
      2022-04-28回复从君华
      然后再去看下组件通讯的文档
      2022-04-28
      回复
    • 从君华
      从君华
      2022-04-28回复武曲心
      就是基于官方文档来写的,请问我上面的代码片段中,哪个部分是错误的写法呢?
      2022-04-28
      回复
    • 武曲心
      武曲心
      2022-04-28回复从君华
      wxs的change:prop是这样写的
      2022-04-28
      回复
    查看更多(10)
登录 后发表内容