导航

文字链接 AsamLink

提供文字链接或可点击的文本操作。

使用场景 ​

提供文字链接或可点击的文本操作。

基础用法与状态 ​

下列示例只使用本入口的实际公开能力。

基础用法与状态

展开源码

使用约定 ​

href/target 设置真实目标,type、underline、disabled、icon 与 default/icon 插槽控制呈现。click 提供 MouseEvent;阻止默认行为需由宿主明确处理。ASAM size 支持 large/big/default/small,区别于图标的图形尺寸。

链接目标校验 ​

href 会直接传给原生 <a>,组件没有自动过滤 URL。 完整说明。

完整 TypeScript 版本:

ts
function sanitizeUrl(url: string): string {
	const allowedProtocols = ['http:', 'https:'];
	try {
		const parsed = new URL(url, window.location.origin);
		return allowedProtocols.includes(parsed.protocol) ? parsed.href : '#';
	} catch {
		return '#';
	}
}

完整 JavaScript 版本:

js
function sanitizeUrl(url) {
	const allowedProtocols = ['http:', 'https:'];
	try {
		const parsed = new URL(url, window.location.origin);
		return allowedProtocols.includes(parsed.protocol) ? parsed.href : '#';
	} catch {
		return '#';
	}
}

这两个函数用于浏览器环境,只演示协议校验;HTTP/HTTPS 域名、跳转目标及授权仍须满足业务规则,不能仅凭协议白名单认定目标可信。

完整使用场景 ​

基础用法 ​

基础的文字链接用法。

基础用法

展开源码

禁用 ​

文字链接不可用状态。

禁用

展开源码

下划线 ​

控制下划线是否出现

属性 boolean 值 将在 3.0.0 版本中被移除,请考虑切换至新的 API。

从 2.9.9 开始,你可以使用 'always' | 'hover' | 'never' 来控制是否显示下划线。文档中的示例将都使用这些值。如果您使用的版本 低于 2.9.9,请参考:

vue
<template>
	<!-- works before 2.9.9, use 'hover' after, removed in 3.0.0 -->
	<el-link underline>link</el-link>
	<!-- works before 2.9.9, use 'never' after, removed in 3.0.0 -->
	<el-link :underline="false">link</el-link>
</template>

下划线

展开源码

图标 ​

带图标的链接

使用 icon 属性添加图标,可传入预先注册的组件名称,或 SVG Vue 图标组件本身。ASAM 图标包提供对应图标,详见图标文档。

使用图标

展开源码

API

属性 AsamLinkProps

属性名说明类型默认值
disabled是否禁用状态boolean | undefinedfalse
type类型enum"default" | "primary" | "success" | "danger" | "warning" | "info"完整类型:"default" | "primary" | "success" | "danger" | "warning" | "info" | undefined—
target同原生 target 属性enum"_self" | "_blank" | "_parent" | "_top"完整类型:(string & {}) | "_self" | "_blank" | "_parent" | "_top" | undefined—
underline控制下划线是否出现enum"hover" | "always" | "never"完整类型:boolean | "hover" | "always" | "never" | undefinedfalse
href原生 href 属性string | undefined—
icon自定义图标(AsamLinkProps)["icon"]—
size—enum"large" | "big" | "default" | "small"完整类型:AsamControlSize | undefined—

插槽 AsamLinkSlots

属性名说明类型默认值
default—(() => VNode[]) | undefined—
icon—(() => VNode[]) | undefined—

事件 AsamLinkEmits

属性名说明类型默认值
click—[event: MouseEvent]—

实例方法与状态 AsamLinkExpose

类型 AsamLinkInstance

类型 AsamLinkConfigContext

属性名说明类型默认值
type—enum"default" | "primary" | "success" | "danger" | "warning" | "info"完整类型:"default" | "primary" | "success" | "danger" | "warning" | "info" | undefined—
underline—enum"hover" | "always" | "never"完整类型:boolean | "hover" | "always" | "never" | undefined—

类型 AsamLinkPropsPublic

属性名说明类型默认值
disabled—boolean | undefined—
type—enum"default" | "primary" | "success" | "danger" | "warning" | "info"完整类型:(AsamLinkPropsPublic)["type"]—
target—string | undefined—
underline—enum"hover" | "always" | "never"完整类型:(AsamLinkPropsPublic)["underline"]—
href—string | undefined—
icon—(AsamLinkPropsPublic)["icon"]—
size—enum"large" | "big" | "default" | "small"完整类型:AsamControlSize | undefined—

用法与契约补充说明 ​

链接目标校验 ​

href 会直接传给原生 <a>,组件没有自动过滤 URL。来自外部输入的目标应由宿主在传入前校验,避免执行 javascript: 等协议或跳转到不允许的目标。以下函数允许 HTTP、HTTPS 及按当前页面 origin 解析的相对路径;解析失败或协议不在白名单时返回 #。传给 AsamLink 的是 sanitizeUrl(rawUrl) 的返回值。

参数与事件补充说明

完整基础 API,并支持 ASAM 四档尺寸继承。

参数与事件说明

disabled

必填:否;声明来源:上游声明。

disabled 参数与事件数据

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

枚举:false / true

默认值与来源
false(隐式 Boolean 默认;已安装组件)

固定上游文档默认:false(2.14.7;文档事实,实际默认以 ASAM 源码 / 安装包为准)

type

必填:否;声明来源:上游声明。

type 参数与事件数据

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

枚举:"default" / "primary" / "success" / "danger" / "warning" / "info"

默认值与来源
未知 / 未声明

固定上游文档默认:default(2.14.7;文档事实,实际默认以 ASAM 源码 / 安装包为准)

固定上游源码默认表达式:undefined(2.14.7;源码事实,未作为 ASAM 运行实测)

target

必填:否;声明来源:上游声明。

target 参数与事件数据

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

枚举:"_self" / "_blank" / "_parent" / "_top"

默认值与来源
未知 / 未声明

固定上游文档默认:\_self(2.14.7;文档事实,实际默认以 ASAM 源码 / 安装包为准)

固定上游源码默认表达式:'_self'(2.14.7;源码事实,未作为 ASAM 运行实测)

underline

必填:否;声明来源:上游声明。

underline 参数与事件数据

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

枚举:false / true / "hover" / "always" / "never"

默认值与来源
false(隐式 Boolean 默认;已安装组件)

固定上游文档默认:hover(2.14.7;文档事实,实际默认以 ASAM 源码 / 安装包为准)

固定上游源码默认表达式:undefined(2.14.7;源码事实,未作为 ASAM 运行实测)

href

必填:否;声明来源:上游声明。

默认值与来源
未知 / 未声明

固定上游文档默认:未声明(2.14.7;文档事实,实际默认以 ASAM 源码 / 安装包为准)

固定上游源码默认表达式:''(2.14.7;源码事实,未作为 ASAM 运行实测)

icon

必填:否;声明来源:上游声明。

icon 参数与事件数据

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

事件参数:(props: any, ctx: Parameters<Extract<NonNullable<(AsamLinkProps)["icon"]>, (...args: never[]) => unknown>>[1]): any

  • icon.__isFragment: undefined — 依赖声明
  • icon.__isTeleport: undefined — 依赖声明
  • icon.__isSuspense: undefined — 依赖声明
默认值与来源
未知 / 未声明

固定上游文档默认:未声明(2.14.7;文档事实,实际默认以 ASAM 源码 / 安装包为准)

固定上游源码未声明 default(2.14.7;源码事实,未作为 ASAM 运行实测)

size

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

size 参数与事件数据

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

枚举:"large" / "big" / "default" / "small"

AsamLinkProps 公开类型视图
ts
import type { Attrs } from 'vue';
import type { AsamLinkProps, AsamControlSize } from '@asam-ui/ui';

type PublicMember<T, K extends PropertyKey> = T extends unknown ? K extends keyof T ? T[K] : never : never;

// AsamLinkProps
type PublicContract = {
	"disabled"?: boolean | undefined;
	"type"?: "default" | "primary" | "success" | "danger" | "warning" | "info" | undefined;
	"target"?: (string & {}) | "_self" | "_blank" | "_parent" | "_top" | undefined;
	"underline"?: boolean | "hover" | "always" | "never" | undefined;
	"href"?: string | undefined;
	"icon"?: (AsamLinkProps)["icon"];
	"size"?: AsamControlSize | undefined;
};

参数与事件说明

default

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

default 参数与事件数据

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

事件参数:(): VNode<import("vue").RendererNode, import("vue").RendererElement, { [key: string]: any; }>[]

icon

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

icon 参数与事件数据

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

事件参数:(): VNode<import("vue").RendererNode, import("vue").RendererElement, { [key: string]: any; }>[]

AsamLinkSlots 公开类型视图
ts
import type { VNode } from 'vue';
import type { AsamLinkSlots } from '@asam-ui/ui';

// AsamLinkSlots
type PublicContract = {
	"default"?: (() => VNode[]) | undefined;
	"icon"?: (() => VNode[]) | undefined;
};

参数与事件说明

click

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

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

// AsamLinkEmits
type PublicContract = {
	"click": [event: MouseEvent];
};
AsamLinkExpose 公开类型视图
ts
import type { AsamLinkExpose } from '@asam-ui/ui';

// AsamLinkExpose
type PublicContract = AsamLinkExpose;
AsamLinkInstance 公开类型视图
ts
import type { AsamLinkInstance } from '@asam-ui/ui';

// AsamLinkInstance
type PublicContract = AsamLinkInstance;

参数与事件说明

type

必填:否;声明来源:上游声明。

type 参数与事件数据

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

枚举:"default" / "primary" / "success" / "danger" / "warning" / "info"

默认值与来源
未知 / 未声明

固定上游源码默认表达式:undefined(2.14.7;源码事实,未作为 ASAM 运行实测)

underline

必填:否;声明来源:上游声明。

underline 参数与事件数据

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

枚举:false / true / "hover" / "always" / "never"

默认值与来源
未知 / 未声明

固定上游源码默认表达式:undefined(2.14.7;源码事实,未作为 ASAM 运行实测)

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

// AsamLinkConfigContext
type PublicContract = {
	"type"?: "default" | "primary" | "success" | "danger" | "warning" | "info" | undefined;
	"underline"?: boolean | "hover" | "always" | "never" | undefined;
};

参数与事件说明

disabled

必填:否;声明来源:上游声明。

disabled 参数与事件数据

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

枚举:false / true

type

必填:否;声明来源:上游声明。

type 参数与事件数据

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

枚举:"default" / "primary" / "success" / "danger" / "warning" / "info"

默认值与来源
未知 / 未声明

固定上游源码默认表达式:undefined(2.14.7;源码事实,未作为 ASAM 运行实测)

target

必填:否;声明来源:上游声明。

默认值与来源
未知 / 未声明

固定上游源码默认表达式:'_self'(2.14.7;源码事实,未作为 ASAM 运行实测)

underline

必填:否;声明来源:上游声明。

underline 参数与事件数据

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

枚举:false / true / "hover" / "always" / "never"

默认值与来源
未知 / 未声明

固定上游源码默认表达式:undefined(2.14.7;源码事实,未作为 ASAM 运行实测)

href

必填:否;声明来源:上游声明。

默认值与来源
未知 / 未声明

固定上游源码默认表达式:''(2.14.7;源码事实,未作为 ASAM 运行实测)

icon

必填:否;声明来源:上游声明。

icon 参数与事件数据

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

事件参数:(props: any, ctx: Parameters<Extract<NonNullable<(AsamLinkPropsPublic)["icon"]>, (...args: never[]) => unknown>>[1]): any

  • icon.__isFragment: undefined — 依赖声明
  • icon.__isTeleport: undefined — 依赖声明
  • icon.__isSuspense: undefined — 依赖声明
默认值与来源
未知 / 未声明

固定上游源码未声明 default(2.14.7;源码事实,未作为 ASAM 运行实测)

size

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

size 参数与事件数据

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

枚举:"large" / "big" / "default" / "small"

AsamLinkPropsPublic 公开类型视图
ts
import type { Attrs } from 'vue';
import type { AsamLinkPropsPublic, AsamLinkProps, AsamControlSize } from '@asam-ui/ui';

type PublicMember<T, K extends PropertyKey> = T extends unknown ? K extends keyof T ? T[K] : never : never;

// AsamLinkPropsPublic
type PublicContract = {
	readonly "disabled"?: boolean | undefined;
	readonly "type"?: (AsamLinkPropsPublic)["type"];
	readonly "target"?: string | undefined;
	readonly "underline"?: (AsamLinkPropsPublic)["underline"];
	readonly "href"?: string | undefined;
	readonly "icon"?: (AsamLinkPropsPublic)["icon"];
	"size"?: AsamControlSize | undefined;
};

搜索文档

Tab 选择结果 Enter 打开 Esc 关闭