nav-dot.vue 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <template>
  2. <view>
  3. <page-head :title="title"></page-head>
  4. <view class="uni-padding-wrap uni-common-mt">
  5. <view class="uni-title"> <uni-icons size="16" type="info"></uni-icons>说明 : </view>
  6. <view class="uni-helllo-text">
  7. <view
  8. >在App端可在pages.json里配置buttons,暂不支持动态改变buttons的样式,使用onNavigationBarButtonTap可监听红点按钮的点击事件。</view
  9. >
  10. </view>
  11. </view>
  12. </view>
  13. </template>
  14. <script>
  15. export default {
  16. data() {
  17. return {
  18. title: 'nav-dot'
  19. };
  20. },
  21. onReady() {
  22. this.setStyle(0,true);
  23. this.setStyle(1,true,'9');
  24. },
  25. methods: {
  26. /**
  27. * 修改导航栏buttons
  28. * index[number] 修改的buttons 下标索引,最右边索引为0
  29. * show[boolean] 显示还是隐藏角标或者红点
  30. * text[string] 需要修改的角标的text 内容 ,如果定义redDot 此参数无效 ,如果定义badgeText请设置具体,如果不用输入
  31. */
  32. setStyle(index, show,text) {
  33. let pages = getCurrentPages();
  34. let page = pages[pages.length - 1];
  35. // #ifdef APP-PLUS
  36. let currentWebview = page.$getAppWebview();
  37. if(show){
  38. if(index === 0){
  39. currentWebview.showTitleNViewButtonRedDot({index:index,text:text})
  40. }else{
  41. currentWebview.setTitleNViewButtonBadge({index:index,text:text})
  42. }
  43. }else{
  44. if(index === 0){
  45. currentWebview.hideTitleNViewButtonRedDot({index:index})
  46. }else{
  47. currentWebview.removeTitleNViewButtonBadge({index:index})
  48. }
  49. }
  50. // #endif
  51. }
  52. },
  53. onNavigationBarButtonTap(e) {
  54. uni.showToast({
  55. title: e.index === 0 ? '你点了消息按钮' : '你点了关注按钮',
  56. icon: 'none'
  57. });
  58. // 取消红点或者角标
  59. this.setStyle(e.index,false);
  60. }
  61. };
  62. </script>
  63. <style></style>