指令

无限滚动指令 AsamInfiniteScroll

在滚动容器接近末尾时请求追加内容。

使用场景 ​

在滚动容器接近末尾时请求追加内容。

契约与组合 ​

这是 v-asam-infinite-scroll 指令;在 script setup 中导入 AsamInfiniteScroll as vAsamInfiniteScroll,或通过插件注册使用。 完整说明。

滚动容器可以是指令元素或最近的可滚动父元素。 完整说明。

卸载由原生清理 scroll 监听和不足一屏观察器;原生已排队节流、以及 mounted 等待 nextTick 期间发生卸载的行为均保持上游实现,ASAM 不增加异步清理或禁止迟到回调的保证。 完整说明。

基础用法与状态 ​

基础用法与状态

展开源码

立即填充与嵌套滚动容器 ​

立即填充与嵌套滚动容器

展开源码

实例、类型与边界 ​

公开 API 与下列完整 SFC 来自同一组件入口。TS 和 JS 演示分别提供所有本地依赖文件;类型约束只出现在 TS 中。远程请求与业务持久化由宿主承担。

API

指令 AsamInfiniteScroll

属性名说明类型默认值
created—DirectiveHook<HTMLElement, null, AsamInfiniteScrollCallback, string, unknown> | undefined—
beforeMount—DirectiveHook<HTMLElement, null, AsamInfiniteScrollCallback, string, unknown> | undefined—
mounted—DirectiveHook<HTMLElement, null, AsamInfiniteScrollCallback, string, unknown> | undefined—
beforeUpdate—DirectiveHook<HTMLElement, VNode<any, HTMLElement, { [key: string]: any; }>, AsamInfiniteScrollCallback, string, unknown> | undefined—
updated—DirectiveHook<HTMLElement, VNode<any, HTMLElement, { [key: string]: any; }>, AsamInfiniteScrollCallback, string, unknown> | undefined—
beforeUnmount—DirectiveHook<HTMLElement, null, AsamInfiniteScrollCallback, string, unknown> | undefined—
unmounted—DirectiveHook<HTMLElement, null, AsamInfiniteScrollCallback, string, unknown> | undefined—
getSSRProps—(typeof AsamInfiniteScroll)["getSSRProps"]—
deep—boolean | undefined—
install—(app: App) => void—

类型 AsamInfiniteScrollCallback

ts
(): void

类型 AsamInfiniteScrollDirective

属性名说明类型默认值
created—DirectiveHook<HTMLElement, null, AsamInfiniteScrollCallback, string, unknown> | undefined—
beforeMount—DirectiveHook<HTMLElement, null, AsamInfiniteScrollCallback, string, unknown> | undefined—
mounted—DirectiveHook<HTMLElement, null, AsamInfiniteScrollCallback, string, unknown> | undefined—
beforeUpdate—DirectiveHook<HTMLElement, VNode<any, HTMLElement, { [key: string]: any; }>, AsamInfiniteScrollCallback, string, unknown> | undefined—
updated—DirectiveHook<HTMLElement, VNode<any, HTMLElement, { [key: string]: any; }>, AsamInfiniteScrollCallback, string, unknown> | undefined—
beforeUnmount—DirectiveHook<HTMLElement, null, AsamInfiniteScrollCallback, string, unknown> | undefined—
unmounted—DirectiveHook<HTMLElement, null, AsamInfiniteScrollCallback, string, unknown> | undefined—
getSSRProps—(AsamInfiniteScrollDirective)["getSSRProps"]—
deep—boolean | undefined—
install—(app: App) => void—

类型 AsamInfiniteScrollAttributes

属性名说明类型默认值
infinite-scroll-delay—number | undefined—
infinite-scroll-distance—number | undefined—
infinite-scroll-disabled—boolean | undefined—
infinite-scroll-immediate—boolean | undefined—

用法与契约补充说明 ​

契约与组合 ​

这是 v-asam-infinite-scroll 指令;在 script setup 中导入 AsamInfiniteScroll as vAsamInfiniteScroll,或通过插件注册使用。指令绑定为加载函数;infinite-scroll-delay 设置节流间隔,infinite-scroll-distance 设置触发距离,infinite-scroll-disabled 在加载中、暂停或到达末页时禁止追加。infinite-scroll-immediate=true 会在内容不足一屏时继续填充;false 等待实际滚动。

契约与组合 ​

滚动容器可以是指令元素或最近的可滚动父元素。mounted / updated / unmounted 生命周期直接使用 底层 2.14.7 的指令函数,回调和 this 原样传入。固定版本捕获挂载时的加载函数,updated 不替换该函数;需要动态分派时,宿主绑定一个稳定函数并在函数体读取当前状态,或以 key 重挂指令。完整示例采用稳定函数,展示加载中、末页、暂停/恢复、空列表立即填充和嵌套滚动父容器。

契约与组合 ​

卸载由原生清理 scroll 监听和不足一屏观察器;原生已排队节流、以及 mounted 等待 nextTick 期间发生卸载的行为均保持上游实现,ASAM 不增加异步清理或禁止迟到回调的保证。宿主需要避免重复请求,在卸载时取消自有请求或定时器,并可用自己的挂载标记拒绝失效业务请求。清空重新填充时,以 key 重挂指令恢复初始不足一屏观察器,并取消旧请求计时器;immediate 只保证初始填充,不自动重建已经释放的原生观察器。该指令在 2.14.7 已有原生弃用提示;本入口保留公开委托,替代组合见 AsamScrollbar。

参数与事件补充说明

保留基础生命周期函数与回调绑定行为。

参数与事件说明

created

必填:否;声明来源:依赖声明。

created 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(el: HTMLElement, binding: DirectiveBinding<AsamInfiniteScrollCallback, string, unknown>, vnode: VNode<any, HTMLElement, { [key: string]: any; }>, prevVNode: null): void

beforeMount

必填:否;声明来源:依赖声明。

beforeMount 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(el: HTMLElement, binding: DirectiveBinding<AsamInfiniteScrollCallback, string, unknown>, vnode: VNode<any, HTMLElement, { [key: string]: any; }>, prevVNode: null): void

mounted

必填:否;声明来源:依赖声明。

mounted 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(el: HTMLElement, binding: DirectiveBinding<AsamInfiniteScrollCallback, string, unknown>, vnode: VNode<any, HTMLElement, { [key: string]: any; }>, prevVNode: null): void

beforeUpdate

必填:否;声明来源:依赖声明。

beforeUpdate 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(el: HTMLElement, binding: DirectiveBinding<AsamInfiniteScrollCallback, string, unknown>, vnode: VNode<any, HTMLElement, { [key: string]: any; }>, prevVNode: VNode<any, HTMLElement, { [key: string]: any; }>): void

updated

必填:否;声明来源:依赖声明。

updated 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(el: HTMLElement, binding: DirectiveBinding<AsamInfiniteScrollCallback, string, unknown>, vnode: VNode<any, HTMLElement, { [key: string]: any; }>, prevVNode: VNode<any, HTMLElement, { [key: string]: any; }>): void

beforeUnmount

必填:否;声明来源:依赖声明。

beforeUnmount 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(el: HTMLElement, binding: DirectiveBinding<AsamInfiniteScrollCallback, string, unknown>, vnode: VNode<any, HTMLElement, { [key: string]: any; }>, prevVNode: null): void

unmounted

必填:否;声明来源:依赖声明。

unmounted 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(el: HTMLElement, binding: DirectiveBinding<AsamInfiniteScrollCallback, string, unknown>, vnode: VNode<any, HTMLElement, { [key: string]: any; }>, prevVNode: null): void

getSSRProps

必填:否;声明来源:依赖声明。

getSSRProps 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(binding: DirectiveBinding<AsamInfiniteScrollCallback, string, unknown>, vnode: VNode<RendererNode, RendererElement, { [key: string]: any; }>): ReturnType<Extract<NonNullable<(typeof AsamInfiniteScroll)["getSSRProps"]>, (...args: never[]) => unknown>>

deep

必填:否;声明来源:依赖声明。

deep 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

枚举:false / true

install

必填:是;声明来源:ASAM 声明。

install 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(app: App<any>): void

AsamInfiniteScroll 公开类型视图
ts
import type { DirectiveHook, DirectiveBinding, VNode, RendererNode, RendererElement, App } from 'vue';
import type { AsamInfiniteScrollCallback, AsamInfiniteScrollDirective } from '@asam-ui/ui';
import { AsamInfiniteScroll } from '@asam-ui/ui';

// AsamInfiniteScroll
type PublicContract = {
	"created"?: DirectiveHook<HTMLElement, null, AsamInfiniteScrollCallback, string, unknown> | undefined;
	"beforeMount"?: DirectiveHook<HTMLElement, null, AsamInfiniteScrollCallback, string, unknown> | undefined;
	"mounted"?: DirectiveHook<HTMLElement, null, AsamInfiniteScrollCallback, string, unknown> | undefined;
	"beforeUpdate"?: DirectiveHook<HTMLElement, VNode<any, HTMLElement, { [key: string]: any; }>, AsamInfiniteScrollCallback, string, unknown> | undefined;
	"updated"?: DirectiveHook<HTMLElement, VNode<any, HTMLElement, { [key: string]: any; }>, AsamInfiniteScrollCallback, string, unknown> | undefined;
	"beforeUnmount"?: DirectiveHook<HTMLElement, null, AsamInfiniteScrollCallback, string, unknown> | undefined;
	"unmounted"?: DirectiveHook<HTMLElement, null, AsamInfiniteScrollCallback, string, unknown> | undefined;
	"getSSRProps"?: (typeof AsamInfiniteScroll)["getSSRProps"];
	"deep"?: boolean | undefined;
	"install": (app: App) => void;
};
AsamInfiniteScrollCallback 公开类型视图
ts
import type { AsamInfiniteScrollCallback } from '@asam-ui/ui';

// AsamInfiniteScrollCallback
type PublicContract = {
	(): void;
};

参数与事件说明

created

必填:否;声明来源:依赖声明。

created 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(el: HTMLElement, binding: DirectiveBinding<AsamInfiniteScrollCallback, string, unknown>, vnode: VNode<any, HTMLElement, { [key: string]: any; }>, prevVNode: null): void

beforeMount

必填:否;声明来源:依赖声明。

beforeMount 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(el: HTMLElement, binding: DirectiveBinding<AsamInfiniteScrollCallback, string, unknown>, vnode: VNode<any, HTMLElement, { [key: string]: any; }>, prevVNode: null): void

mounted

必填:否;声明来源:依赖声明。

mounted 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(el: HTMLElement, binding: DirectiveBinding<AsamInfiniteScrollCallback, string, unknown>, vnode: VNode<any, HTMLElement, { [key: string]: any; }>, prevVNode: null): void

beforeUpdate

必填:否;声明来源:依赖声明。

beforeUpdate 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(el: HTMLElement, binding: DirectiveBinding<AsamInfiniteScrollCallback, string, unknown>, vnode: VNode<any, HTMLElement, { [key: string]: any; }>, prevVNode: VNode<any, HTMLElement, { [key: string]: any; }>): void

updated

必填:否;声明来源:依赖声明。

updated 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(el: HTMLElement, binding: DirectiveBinding<AsamInfiniteScrollCallback, string, unknown>, vnode: VNode<any, HTMLElement, { [key: string]: any; }>, prevVNode: VNode<any, HTMLElement, { [key: string]: any; }>): void

beforeUnmount

必填:否;声明来源:依赖声明。

beforeUnmount 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(el: HTMLElement, binding: DirectiveBinding<AsamInfiniteScrollCallback, string, unknown>, vnode: VNode<any, HTMLElement, { [key: string]: any; }>, prevVNode: null): void

unmounted

必填:否;声明来源:依赖声明。

unmounted 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(el: HTMLElement, binding: DirectiveBinding<AsamInfiniteScrollCallback, string, unknown>, vnode: VNode<any, HTMLElement, { [key: string]: any; }>, prevVNode: null): void

getSSRProps

必填:否;声明来源:依赖声明。

getSSRProps 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(binding: DirectiveBinding<AsamInfiniteScrollCallback, string, unknown>, vnode: VNode<RendererNode, RendererElement, { [key: string]: any; }>): ReturnType<Extract<NonNullable<(AsamInfiniteScrollDirective)["getSSRProps"]>, (...args: never[]) => unknown>>

deep

必填:否;声明来源:依赖声明。

deep 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

枚举:false / true

install

必填:是;声明来源:ASAM 声明。

install 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(app: App<any>): void

AsamInfiniteScrollDirective 公开类型视图
ts
import type { DirectiveHook, DirectiveBinding, VNode, RendererNode, RendererElement, App } from 'vue';
import type { AsamInfiniteScrollDirective, AsamInfiniteScrollCallback } from '@asam-ui/ui';

// AsamInfiniteScrollDirective
type PublicContract = {
	"created"?: DirectiveHook<HTMLElement, null, AsamInfiniteScrollCallback, string, unknown> | undefined;
	"beforeMount"?: DirectiveHook<HTMLElement, null, AsamInfiniteScrollCallback, string, unknown> | undefined;
	"mounted"?: DirectiveHook<HTMLElement, null, AsamInfiniteScrollCallback, string, unknown> | undefined;
	"beforeUpdate"?: DirectiveHook<HTMLElement, VNode<any, HTMLElement, { [key: string]: any; }>, AsamInfiniteScrollCallback, string, unknown> | undefined;
	"updated"?: DirectiveHook<HTMLElement, VNode<any, HTMLElement, { [key: string]: any; }>, AsamInfiniteScrollCallback, string, unknown> | undefined;
	"beforeUnmount"?: DirectiveHook<HTMLElement, null, AsamInfiniteScrollCallback, string, unknown> | undefined;
	"unmounted"?: DirectiveHook<HTMLElement, null, AsamInfiniteScrollCallback, string, unknown> | undefined;
	"getSSRProps"?: (AsamInfiniteScrollDirective)["getSSRProps"];
	"deep"?: boolean | undefined;
	"install": (app: App) => void;
};

参数与事件说明

infinite-scroll-delay

必填:否;声明来源:ASAM 声明。

infinite-scroll-distance

必填:否;声明来源:ASAM 声明。

infinite-scroll-disabled

必填:否;声明来源:ASAM 声明。

infinite-scroll-disabled 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

枚举:false / true

infinite-scroll-immediate

必填:否;声明来源:ASAM 声明。

infinite-scroll-immediate 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

枚举:false / true

AsamInfiniteScrollAttributes 公开类型视图
ts
import type { AsamInfiniteScrollAttributes, AsamInfiniteScrollDirective } from '@asam-ui/ui';

// AsamInfiniteScrollAttributes
type PublicContract = {
	"infinite-scroll-delay"?: number | undefined;
	"infinite-scroll-distance"?: number | undefined;
	"infinite-scroll-disabled"?: boolean | undefined;
	"infinite-scroll-immediate"?: boolean | undefined;
};

搜索文档

Tab 选择结果 Enter 打开 Esc 关闭