list-with-collapses.vue 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <template>
  2. <view class="page">
  3. <page-head :title="title"></page-head>
  4. <view class="uni-card">
  5. <view class="uni-list">
  6. <view class="uni-list-cell uni-collapse" v-for="(list,index) in lists" :key="index" :class="index === lists.length - 1 ? 'uni-list-cell-last' : ''">
  7. <view class="uni-list-cell-navigate uni-navigate-bottom" hover-class="uni-list-cell-hover" :class="list.show ? 'uni-active' : ''"
  8. @click="trigerCollapse(index)">
  9. {{list.title}}
  10. </view>
  11. <view class="uni-list uni-collapse" :class="list.show ? 'uni-active' : ''">
  12. <view class="uni-list-cell" hover-class="uni-list-cell-hover" v-for="(item,key) in list.item" :key="key" :class="key === list.item.length - 1 ? 'uni-list-cell-last' : ''">
  13. <view class="uni-list-cell-navigate uni-navigate-right"> {{item}} </view>
  14. </view>
  15. </view>
  16. </view>
  17. </view>
  18. </view>
  19. </view>
  20. </template>
  21. <script>
  22. export default {
  23. data() {
  24. return {
  25. title: 'list-with-collapses',
  26. lists: [{
  27. title: "产品",
  28. show: false,
  29. item: ["iOS", "Android", "HTML5"]
  30. },
  31. {
  32. title: "方案",
  33. show: false,
  34. item: ["PC方案", "手机方案", "TV方案"]
  35. },
  36. {
  37. title: "新闻",
  38. show: false,
  39. item: ["公司新闻", "行业新闻"]
  40. }
  41. ]
  42. }
  43. },
  44. methods: {
  45. trigerCollapse(e) {
  46. for (let i = 0, len = this.lists.length; i < len; ++i) {
  47. if (e === i) {
  48. this.lists[i].show = !this.lists[i].show;
  49. } else {
  50. this.lists[i].show = false;
  51. }
  52. }
  53. }
  54. }
  55. }
  56. </script>
  57. <style>
  58. </style>