| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- <template>
- <div class="demo">
- <h2>{{ translate('basic') }}</h2>
- <nut-cell>
- <nut-list :listData="count" @scroll-bottom="handleScroll">
- <template v-slot="{ item, index }">
- <div class="list-item">
- {{ index }}
- </div>
- </template>
- </nut-list>
- </nut-cell>
- </div>
- </template>
- <script lang="ts">
- import { onMounted, reactive, toRefs } from 'vue';
- import { createComponent } from '@/packages/utils/create';
- const { createDemo, translate } = createComponent('list');
- import { useTranslate } from '@/sites/assets/util/useTranslate';
- const initTranslate = () =>
- useTranslate({
- 'zh-CN': {
- basic: '基本用法'
- },
- 'en-US': {
- basic: 'Basic Usage'
- }
- });
- export default createDemo({
- props: {},
- setup() {
- initTranslate();
- const state = reactive({
- count: new Array(100).fill(0)
- });
- const handleScroll = () => {
- let arr = new Array(100).fill(0);
- const len = state.count.length;
- state.count = state.count.concat(arr.map((item: number, index: number) => len + index + 1));
- };
- onMounted(() => {
- state.count = state.count.map((item: number, index: number) => index + 1);
- });
- return { ...toRefs(state), handleScroll, translate };
- }
- });
- </script>
- <style lang="scss">
- .demo {
- .nut-cell {
- height: 100%;
- }
- .nut-list-item {
- display: flex;
- align-items: center;
- justify-content: center;
- width: 100%;
- margin-bottom: 10px;
- height: 50px;
- background-color: #f4a8b6;
- border-radius: 10px;
- }
- }
- </style>
|