## vant-autoload [英文](README.md) 基于[@youzan/vant](https://github.com/youzan/vant)的自动加载通用业务组件 #### 更新日志 ##### 1.1.0 1. 增加content插槽作为主视图传入 2. 使用vueg对加载时的loading动画进行骨架渲染 ##### 1.0.0 1. vant-autoload发布 ### 安装 ``` javascript import Autoload from 'vant-autoload'; Vue.component(Autoload.name, Autoload); ``` ### 用法 #### 基础用法 ```html ``` ```js class ViewModel { constructor(obj) { this.to = ''; // 通过视图模型转换,将返回对象进行包装,生成任何你想要的属性。 /** * to 属性是必须的,如果要支持点击跳转。 * */ } } const objView = { props: { value: ViewModel }, render: h => h('span', '单项数据' + this.value) }; const swipeRightView = { props: { value: ViewModel, index: { type: Number } }, render: h => h('span', '删除' + this.value) }; export default { data() { return { value: [], objView: objView, swipeRightView: swipeRightView, loading: false, finished: false }; }, methods: { load() { setTimeout(() => { for (let i = 0; i < 10; i++) { this.value.push(new ViewModel(this.value.length + 1)); } this.loading = false; if (this.value.length >= 40) { this.finished = true; } }, 500); } } }; ``` #### 高级用法 ```html ``` ```js const objView = { props: { value: Object }, render: h => h('span', 'Single Card Content' + this.value) }; const rightView = { props: { value: Object, index: { type: Number } }, render: h => h('button', { on: { click() { this.$emit('swipe-click'); } } }, 'Delete' + this.value) }; export default { components: { rightView: rightView, }, data() { return { value: [], objView: objView, loading: false, finished: false }; }, methods: { load() { setTimeout(() => { for (let i = 0; i < 10; i++) { this.value.push(new ViewModel(this.value.length + 1)); } this.loading = false; if (this.value.length >= 40) { this.finished = true; } }, 500); } } }; ``` ### API | 属性 | 描述 | 类型 | 默认值 | 是否必须 | |-----------|-----------|-----------|-------------|------| | to | 当点击单个item时, `van-cell` 是否应该跳转 | `Boolean` | `false` | `true` | | clickable | 当点击单个item时, `van-cell` 是否应该响应 | `Boolean` | `false` | `false` | | view | 单个item的主视图,会被`van-cell`包装 | `VueComponent` | | `true` | | canSwipe | 是否支持单个项目的侧滑 | `Boolean` | `false` | `false` | | value | 要被渲染的数据对象合集 | `Array` | `[]` | `true` | | swipeRightView | 如果要支持侧滑,请传递这个组件属性,或通过`right` slot传入组件 | `VueComponent` | | `true` | | finished | 数据是否已全部加载完毕 | `Boolean` | `true` | `false` | | loading | 当前加载状态,如果为`true`,将会显示loading组件 | `Boolean` | `false` | `false` | | limit | 保留属性,用作改善loading,例如渲染同等数量的loading组件 | `Number` | `5` | `false` | ### slot | 名称 | 描述 | 类型 | 默认值 | 是否必须 | |-----------|-----------|-----------|-------------|------| | content[实验性质] | * 可以使用具名slot[name=content] 作为主视图,更加vue style * | `VueComponent` | | `false` | | right | 侧滑时,渲染的组件,内部会将被侧滑的item和index作为属性传递给该组件 | `VueComponent` | | `false` | ### 组件原生事件 | 事件 | 描述 | 参数 | |-----------|-----------|-----------| | load | 当滚动到触底,触发load | - | ### 传递侧滑组件的所有事件到顶层 | Event | Description | Arguments | |-----------|-----------|-----------| | any | 将本组件所有的监听器传递到传入的侧滑组件上 | - |