index.vue 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <template>
  2. <view class="uni-container">
  3. <view class="uni-hello-text">
  4. <text class="hello-text">uni原生插件示例</text>
  5. </view>
  6. <view class="uni-panel" v-for="(item, index) in list" :key="item.id">
  7. <view class="uni-panel-h" :class="item.open ? 'uni-panel-h-on' : ''" @click="triggerCollapse(index)">
  8. <text class="uni-panel-text">{{item.name}}</text>
  9. <text class="uni-panel-icon uni-icon" :class="item.open ? 'uni-panel-icon-on' : ''">{{item.pages ? '&#xe581;' : '&#xe470;'}}</text>
  10. </view>
  11. <view class="uni-panel-c" v-if="item.open">
  12. <view class="uni-navigate-item" v-for="(item2,key) in item.pages" :key="key" @click="goDetailPage(item2.url)">
  13. <text class="uni-navigate-text">{{item2.name ? item2.name : item2}}</text>
  14. <text class="uni-navigate-icon uni-icon">&#xe470;</text>
  15. </view>
  16. </view>
  17. </view>
  18. </view>
  19. </template>
  20. <script>
  21. export default {
  22. data() {
  23. return {
  24. list: [{
  25. id: 'ext-module',
  26. name: '扩展 module',
  27. open: false,
  28. url: '/pages/sample/ext-module'
  29. },
  30. {
  31. id: 'ext-component',
  32. name: '扩展 component',
  33. open: false,
  34. url: '/pages/sample/ext-component'
  35. },
  36. {
  37. id:'richAlert',
  38. name:'插件示例RichAlert',
  39. open:false,
  40. url:'/pages/sample/richAlert'
  41. },
  42. {
  43. id:'UTS_modules',
  44. name:'UTS 原生插件',
  45. open:false,
  46. url:'/pages/sample/uts_toast'
  47. }],
  48. navigateFlag: false
  49. }
  50. },
  51. onLoad() {},
  52. methods: {
  53. triggerCollapse(e) {
  54. if (!this.list[e].pages) {
  55. this.goDetailPage(this.list[e].url);
  56. return;
  57. }
  58. for (var i = 0; i < this.list.length; ++i) {
  59. if (e === i) {
  60. this.list[i].open = !this.list[e].open;
  61. } else {
  62. this.list[i].open = false;
  63. }
  64. }
  65. },
  66. goDetailPage(e) {
  67. if (this.navigateFlag) {
  68. return;
  69. }
  70. this.navigateFlag = true;
  71. uni.navigateTo({
  72. url: e
  73. });
  74. setTimeout(() => {
  75. this.navigateFlag = false;
  76. }, 200)
  77. return false;
  78. }
  79. }
  80. }
  81. </script>
  82. <style>
  83. </style>