1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- <template>
- <view class="p-10">
- <button id="init-btn" class="uni-btn" @click="init">init</button>
- <button id="clear-btn" class="uni-btn" @click="clear">clear</button>
- <view
- class="uni-common-mt list-view-container"
- :class="{ ' p-10': list.length > 0 }"
- >
- <list-view>
- <template v-for="(item, index) in list">
- <list-item
- id="toggle-children-show-btn"
- :class="{ 'uni-common-mt': index > 0 }"
- @click="toggleChildrenShow(item.id)"
- >
- <text>toggle children isShow</text>
- </list-item>
- <template v-if="expandIds.includes(item.id)">
- <template v-for="child in item.children">
- <list-item id="list-item-child" class="mt-5">
- <text>{{ child.id }}</text>
- </list-item>
- </template>
- </template>
- </template>
- </list-view>
- </view>
- </view>
- </template>
- <script>
- type Child = {
- id: string
- }
- type List = {
- id: string
- children: Child[]
- }
- export default {
- data(){
- return {
- list: [] as List[],
- expandIds: [] as string[],
- }
- },
- onLoad() {
- this.init()
- },
- methods: {
- init(){
- this.list = [
- {id:'1', children: [{ id: '1-1'},{ id: '1-2'},{ id: '1-3'}]},
- {id:'2', children: [{ id: '2-1'},{ id: '2-2'},{ id: '2-3'}]},
- {id:'3', children: [{ id: '3-1'},{ id: '3-2'},{ id: '3-3'}]},
- ] as List[]
- this.expandIds = [this.list[0].id]
- },
- clear(){
- this.list = [] as List[]
- this.expandIds = [] as string[]
- },
- toggleChildrenShow(id: string){
- const index = this.expandIds.findIndex((item) => item == id)
- if(index == -1) {
- this.expandIds.push(id)
- } else {
- this.expandIds.splice(index, 1)
- }
- },
- }
- }
- </script>
- <style>
- .p-10 {
- padding: 10px;
- }
- .list-view-container {
- background-color: #fff;
- }
- .mt-5 {
- margin-top: 5px;
- }
- </style>
|