nav-dot.vue 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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. import uniIcons from '@/components/uni-icons/uni-icons.vue';
  16. export default {
  17. data() {
  18. return {
  19. title: 'nav-dot'
  20. };
  21. },
  22. onReady() {
  23. this.setStyle(0,true);
  24. this.setStyle(1,true,'9');
  25. },
  26. methods: {
  27. /**
  28. * 修改导航栏buttons
  29. * index[number] 修改的buttons 下标索引,最右边索引为0
  30. * show[boolean] 显示还是隐藏角标或者红点
  31. * text[string] 需要修改的角标的text 内容 ,如果定义redDot 此参数无效 ,如果定义badgeText请设置具体,如果不用输入
  32. */
  33. setStyle(index, show,text) {
  34. let pages = getCurrentPages();
  35. let page = pages[pages.length - 1];
  36. // #ifdef APP-PLUS
  37. let currentWebview = page.$getAppWebview();
  38. if(show){
  39. if(index === 0){
  40. currentWebview.showTitleNViewButtonRedDot({index:index,text:text})
  41. }else{
  42. currentWebview.setTitleNViewButtonBadge({index:index,text:text})
  43. }
  44. }else{
  45. if(index === 0){
  46. currentWebview.hideTitleNViewButtonRedDot({index:index})
  47. }else{
  48. currentWebview.removeTitleNViewButtonBadge({index:index})
  49. }
  50. }
  51. // #endif
  52. }
  53. },
  54. onNavigationBarButtonTap(e) {
  55. uni.showToast({
  56. title: e.index === 0 ? '你点了消息按钮' : '你点了关注按钮',
  57. icon: 'none'
  58. });
  59. // 取消红点或者角标
  60. this.setStyle(e.index,false);
  61. },
  62. components: {
  63. uniIcons
  64. }
  65. };
  66. </script>
  67. <style></style>