使用场景 ​
在同一滚动范围内定位内容章节。
基础用法与状态 ​
下列示例只使用本入口的实际公开能力。
基础用法与状态
<template>
<div class="anchor-demo">
<AsamAnchor :container="scroll" @change="href = $event">
<AsamAnchorLink href="#doc010-section-one" title="第一节" />
<AsamAnchorLink href="#doc010-section-two" title="第二节" />
</AsamAnchor>
<div ref="scroll" class="anchor-scroll">
<section id="doc010-section-one" class="anchor-section">第一节内容</section>
<section id="doc010-section-two" class="anchor-section">第二节内容</section>
</div>
</div>
<p class="example-paragraph" role="status">当前锚点:{{ href }}</p>
</template>
<script lang="ts" setup>
defineOptions({ name: 'AsamAnchorBasicDemo' });
import { ref } from 'vue';
import { AsamAnchor, AsamAnchorLink } from '@asam-ui/ui';
const scroll = ref<HTMLElement>();
const href = ref('');
</script>
<style scoped>
.anchor-demo {
display: flex;
gap: var(--asam-space-md);
}
.anchor-scroll {
height: 200px;
overflow: auto;
flex: 1;
}
.anchor-section {
height: 260px;
padding: var(--asam-space-md);
}
</style>
<style scoped>
p:where(.example-paragraph) {
margin-block: 16px;
line-height: 1.8;
overflow-wrap: anywhere;
}
</style>
<template>
<div class="anchor-demo">
<AsamAnchor :container="scroll" @change="href = $event">
<AsamAnchorLink href="#doc010-section-one" title="第一节" />
<AsamAnchorLink href="#doc010-section-two" title="第二节" />
</AsamAnchor>
<div ref="scroll" class="anchor-scroll">
<section id="doc010-section-one" class="anchor-section">第一节内容</section>
<section id="doc010-section-two" class="anchor-section">第二节内容</section>
</div>
</div>
<p class="example-paragraph" role="status">当前锚点:{{ href }}</p>
</template>
<script setup>
defineOptions({ name: 'AsamAnchorBasicDemo' });
import { ref } from 'vue';
import { AsamAnchor, AsamAnchorLink } from '@asam-ui/ui';
const scroll = ref();
const href = ref('');
</script>
<style scoped>
.anchor-demo {
display: flex;
gap: var(--asam-space-md);
}
.anchor-scroll {
height: 200px;
overflow: auto;
flex: 1;
}
.anchor-section {
height: 260px;
padding: var(--asam-space-md);
}
</style>
<style scoped>
p:where(.example-paragraph) {
margin-block: 16px;
line-height: 1.8;
overflow-wrap: anywhere;
}
</style>
使用约定 ​
container 指定滚动元素或选择器,offset/bound/duration 调整定位;direction/type/marker 控制导航呈现,change/click 反馈锚点。default 插槽放 AsamAnchorLink,实例 scrollTo 可定位指定 href。目标 id 必须在文档内唯一。
AsamAnchor 的滚动位置、动画、参数默认值和事件顺序遵循原生行为,不额外修补滚动算法。
完整使用场景 ​
基础用法 ​
最简单的用法。
基础用法
<template>
<AsamAnchor :offset="70">
<AsamAnchorLink :href="`#${locale['basic-usage']}`">
{{ locale['Basic Usage'] }}
</AsamAnchorLink>
<AsamAnchorLink :href="`#${locale['horizontal-mode']}`">
{{ locale['Horizontal Mode'] }}
</AsamAnchorLink>
<AsamAnchorLink :href="`#${locale['scroll-container']}`">
{{ locale['Scroll Container'] }}
</AsamAnchorLink>
<AsamAnchorLink :href="`#${locale['anchor-api']}`">
{{ locale['Anchor API'] }}
<template #sub-link>
<AsamAnchorLink :href="`#${locale['anchor-attributes']}`">
{{ locale['Anchor Attributes'] }}
</AsamAnchorLink>
<AsamAnchorLink :href="`#${locale['anchor-events']}`">
{{ locale['Anchor Events'] }}
</AsamAnchorLink>
</template>
</AsamAnchorLink>
</AsamAnchor>
<section
v-for="(target, key) in locale"
:id="key === key.toLowerCase() ? target : undefined"
:key="key"
style="min-height: 180px"
>
{{ target }}
</section>
</template>
<script lang="ts" setup>
defineOptions({ name: 'AsamAnchorCapBasicDemo' });
import { AsamAnchor, AsamAnchorLink } from '@asam-ui/ui';
import { computed } from 'vue';
const locale = computed(() => ({
'basic-usage': 'ui032-cap-basic-basic-usage',
'horizontal-mode': 'ui032-cap-basic-horizontal-mode',
'scroll-container': 'ui032-cap-basic-scroll-container',
'anchor-api': 'ui032-cap-basic-anchor-api',
'anchor-attributes': 'ui032-cap-basic-anchor-attributes',
'anchor-events': 'ui032-cap-basic-anchor-events',
'Basic Usage': '基础用法',
'Horizontal Mode': '水平模式',
'Scroll Container': '滚动容器',
'Anchor API': '锚点 API',
'Anchor Attributes': '锚点属性',
'Anchor Events': '锚点事件'
}));
</script>
<template>
<AsamAnchor :offset="70">
<AsamAnchorLink :href="`#${locale['basic-usage']}`">
{{ locale['Basic Usage'] }}
</AsamAnchorLink>
<AsamAnchorLink :href="`#${locale['horizontal-mode']}`">
{{ locale['Horizontal Mode'] }}
</AsamAnchorLink>
<AsamAnchorLink :href="`#${locale['scroll-container']}`">
{{ locale['Scroll Container'] }}
</AsamAnchorLink>
<AsamAnchorLink :href="`#${locale['anchor-api']}`">
{{ locale['Anchor API'] }}
<template #sub-link>
<AsamAnchorLink :href="`#${locale['anchor-attributes']}`">
{{ locale['Anchor Attributes'] }}
</AsamAnchorLink>
<AsamAnchorLink :href="`#${locale['anchor-events']}`">
{{ locale['Anchor Events'] }}
</AsamAnchorLink>
</template>
</AsamAnchorLink>
</AsamAnchor>
<section
v-for="(target, key) in locale"
:id="key === key.toLowerCase() ? target : undefined"
:key="key"
style="min-height: 180px"
>
{{ target }}
</section>
</template>
<script setup>
defineOptions({ name: 'AsamAnchorCapBasicDemo' });
import { AsamAnchor, AsamAnchorLink } from '@asam-ui/ui';
import { computed } from 'vue';
const locale = computed(() => ({
'basic-usage': 'ui032-cap-basic-basic-usage',
'horizontal-mode': 'ui032-cap-basic-horizontal-mode',
'scroll-container': 'ui032-cap-basic-scroll-container',
'anchor-api': 'ui032-cap-basic-anchor-api',
'anchor-attributes': 'ui032-cap-basic-anchor-attributes',
'anchor-events': 'ui032-cap-basic-anchor-events',
'Basic Usage': '基础用法',
'Horizontal Mode': '水平模式',
'Scroll Container': '滚动容器',
'Anchor API': '锚点 API',
'Anchor Attributes': '锚点属性',
'Anchor Events': '锚点事件'
}));
</script>
水平模式 ​
水平排列的锚点
水平模式不支持sub-link槽位
水平模式
<template>
<AsamAnchor :offset="70" direction="horizontal">
<AsamAnchorLink :href="`#${locale['basic-usage']}`">
{{ locale['Basic Usage'] }}
</AsamAnchorLink>
<AsamAnchorLink :href="`#${locale['horizontal-mode']}`">
{{ locale['Horizontal Mode'] }}
</AsamAnchorLink>
<AsamAnchorLink :href="`#${locale['scroll-container']}`">
{{ locale['Scroll Container'] }}
</AsamAnchorLink>
</AsamAnchor>
<section
v-for="(target, key) in locale"
:id="key === key.toLowerCase() ? target : undefined"
:key="key"
style="min-height: 180px"
>
{{ target }}
</section>
</template>
<script lang="ts" setup>
defineOptions({ name: 'AsamAnchorCapHorizontalDemo' });
import { AsamAnchor, AsamAnchorLink } from '@asam-ui/ui';
import { computed } from 'vue';
const locale = computed(() => ({
'basic-usage': 'ui032-cap-horizontal-basic-usage',
'horizontal-mode': 'ui032-cap-horizontal-horizontal-mode',
'scroll-container': 'ui032-cap-horizontal-scroll-container',
'anchor-api': 'ui032-cap-horizontal-anchor-api',
'anchor-attributes': 'ui032-cap-horizontal-anchor-attributes',
'anchor-events': 'ui032-cap-horizontal-anchor-events',
'Basic Usage': '基础用法',
'Horizontal Mode': '水平模式',
'Scroll Container': '滚动容器',
'Anchor API': '锚点 API',
'Anchor Attributes': '锚点属性',
'Anchor Events': '锚点事件'
}));
</script>
<template>
<AsamAnchor :offset="70" direction="horizontal">
<AsamAnchorLink :href="`#${locale['basic-usage']}`">
{{ locale['Basic Usage'] }}
</AsamAnchorLink>
<AsamAnchorLink :href="`#${locale['horizontal-mode']}`">
{{ locale['Horizontal Mode'] }}
</AsamAnchorLink>
<AsamAnchorLink :href="`#${locale['scroll-container']}`">
{{ locale['Scroll Container'] }}
</AsamAnchorLink>
</AsamAnchor>
<section
v-for="(target, key) in locale"
:id="key === key.toLowerCase() ? target : undefined"
:key="key"
style="min-height: 180px"
>
{{ target }}
</section>
</template>
<script setup>
defineOptions({ name: 'AsamAnchorCapHorizontalDemo' });
import { AsamAnchor, AsamAnchorLink } from '@asam-ui/ui';
import { computed } from 'vue';
const locale = computed(() => ({
'basic-usage': 'ui032-cap-horizontal-basic-usage',
'horizontal-mode': 'ui032-cap-horizontal-horizontal-mode',
'scroll-container': 'ui032-cap-horizontal-scroll-container',
'anchor-api': 'ui032-cap-horizontal-anchor-api',
'anchor-attributes': 'ui032-cap-horizontal-anchor-attributes',
'anchor-events': 'ui032-cap-horizontal-anchor-events',
'Basic Usage': '基础用法',
'Horizontal Mode': '水平模式',
'Scroll Container': '滚动容器',
'Anchor API': '锚点 API',
'Anchor Attributes': '锚点属性',
'Anchor Events': '锚点事件'
}));
</script>
滚动容器 ​
用 offset 设置自定义滚动区域的锚点偏移。监听公开 click 事件并对接收到的 MouseEvent 调用 preventDefault,可阻止链接的浏览器默认行为;本地滚动与历史记录的处理仍由宿主决定。
滚动容器
<template>
<div>
<AsamRow>
<AsamCol :span="18">
<div
style="
height: 30px;
width: 70%;
background: #000;
position: absolute;
top: 0;
left: 0;
color: #fff;
"
>
顶部固定区域
</div>
<div ref="containerRef" style="height: 300px; overflow-y: auto">
<div
id="part1"
style="height: 300px; background: rgb(255 0 0 / 2%); margin-top: 30px"
>
第一部分
</div>
<div
id="part2"
style="height: 300px; background: rgb(0 255 0 / 2%); margin-top: 30px"
>
第二部分
</div>
<div
id="part3"
style="height: 300px; background: rgb(0 0 255 / 2%); margin-top: 30px"
>
第三部分
</div>
</div>
</AsamCol>
<AsamCol :span="6">
<div class="vp-raw">
<AsamAnchor
:container="containerRef"
direction="vertical"
type="default"
:offset="30"
@click="handleClick"
>
<AsamAnchorLink href="#part1" title="第一部分" />
<AsamAnchorLink href="#part2" title="第二部分" />
<AsamAnchorLink href="#part3" title="第三部分" />
</AsamAnchor>
</div>
</AsamCol>
</AsamRow>
</div>
</template>
<script lang="ts" setup>
defineOptions({ name: 'AsamAnchorCapScrollDemo' });
import { AsamRow, AsamCol, AsamAnchor, AsamAnchorLink } from '@asam-ui/ui';
import { ref } from 'vue';
const containerRef = ref<HTMLElement | null>(null);
const handleClick = (e: MouseEvent) => {
e.preventDefault();
};
</script>
<template>
<div>
<AsamRow>
<AsamCol :span="18">
<div
style="
height: 30px;
width: 70%;
background: #000;
position: absolute;
top: 0;
left: 0;
color: #fff;
"
>
顶部固定区域
</div>
<div ref="containerRef" style="height: 300px; overflow-y: auto">
<div
id="part1"
style="height: 300px; background: rgb(255 0 0 / 2%); margin-top: 30px"
>
第一部分
</div>
<div
id="part2"
style="height: 300px; background: rgb(0 255 0 / 2%); margin-top: 30px"
>
第二部分
</div>
<div
id="part3"
style="height: 300px; background: rgb(0 0 255 / 2%); margin-top: 30px"
>
第三部分
</div>
</div>
</AsamCol>
<AsamCol :span="6">
<div class="vp-raw">
<AsamAnchor
:container="containerRef"
direction="vertical"
type="default"
:offset="30"
@click="handleClick"
>
<AsamAnchorLink href="#part1" title="第一部分" />
<AsamAnchorLink href="#part2" title="第二部分" />
<AsamAnchorLink href="#part3" title="第三部分" />
</AsamAnchor>
</div>
</AsamCol>
</AsamRow>
</div>
</template>
<script setup>
defineOptions({ name: 'AsamAnchorCapScrollDemo' });
import { AsamRow, AsamCol, AsamAnchor, AsamAnchorLink } from '@asam-ui/ui';
import { ref } from 'vue';
const containerRef = ref(null);
const handleClick = (e) => {
e.preventDefault();
};
</script>
锚点链接变化 ​
监听锚点链接变化
锚点链接变化
<template>
<AsamAnchor :offset="70" @change="handleChange">
<AsamAnchorLink :href="`#${locale['basic-usage']}`">
{{ locale['Basic Usage'] }}
</AsamAnchorLink>
<AsamAnchorLink :href="`#${locale['horizontal-mode']}`">
{{ locale['Horizontal Mode'] }}
</AsamAnchorLink>
<AsamAnchorLink :href="`#${locale['scroll-container']}`">
{{ locale['Scroll Container'] }}
</AsamAnchorLink>
<AsamAnchorLink :href="`#${locale['anchor-api']}`">
{{ locale['Anchor API'] }}
<template #sub-link>
<AsamAnchorLink :href="`#${locale['anchor-attributes']}`">
{{ locale['Anchor Attributes'] }}
</AsamAnchorLink>
<AsamAnchorLink :href="`#${locale['anchor-events']}`">
{{ locale['Anchor Events'] }}
</AsamAnchorLink>
</template>
</AsamAnchorLink>
</AsamAnchor>
<section
v-for="(target, key) in locale"
:id="key === key.toLowerCase() ? target : undefined"
:key="key"
style="min-height: 180px"
>
{{ target }}
</section>
</template>
<script lang="ts" setup>
defineOptions({ name: 'AsamAnchorCapChangeDemo' });
import { AsamAnchor, AsamAnchorLink } from '@asam-ui/ui';
import { computed } from 'vue';
const locale = computed(() => ({
'basic-usage': 'ui032-cap-change-basic-usage',
'horizontal-mode': 'ui032-cap-change-horizontal-mode',
'scroll-container': 'ui032-cap-change-scroll-container',
'anchor-api': 'ui032-cap-change-anchor-api',
'anchor-attributes': 'ui032-cap-change-anchor-attributes',
'anchor-events': 'ui032-cap-change-anchor-events',
'Basic Usage': '基础用法',
'Horizontal Mode': '水平模式',
'Scroll Container': '滚动容器',
'Anchor API': '锚点 API',
'Anchor Attributes': '锚点属性',
'Anchor Events': '锚点事件'
}));
const handleChange = (href: string) => {
console.log(`anchor change: ${href}`);
};
</script>
<template>
<AsamAnchor :offset="70" @change="handleChange">
<AsamAnchorLink :href="`#${locale['basic-usage']}`">
{{ locale['Basic Usage'] }}
</AsamAnchorLink>
<AsamAnchorLink :href="`#${locale['horizontal-mode']}`">
{{ locale['Horizontal Mode'] }}
</AsamAnchorLink>
<AsamAnchorLink :href="`#${locale['scroll-container']}`">
{{ locale['Scroll Container'] }}
</AsamAnchorLink>
<AsamAnchorLink :href="`#${locale['anchor-api']}`">
{{ locale['Anchor API'] }}
<template #sub-link>
<AsamAnchorLink :href="`#${locale['anchor-attributes']}`">
{{ locale['Anchor Attributes'] }}
</AsamAnchorLink>
<AsamAnchorLink :href="`#${locale['anchor-events']}`">
{{ locale['Anchor Events'] }}
</AsamAnchorLink>
</template>
</AsamAnchorLink>
</AsamAnchor>
<section
v-for="(target, key) in locale"
:id="key === key.toLowerCase() ? target : undefined"
:key="key"
style="min-height: 180px"
>
{{ target }}
</section>
</template>
<script setup>
defineOptions({ name: 'AsamAnchorCapChangeDemo' });
import { AsamAnchor, AsamAnchorLink } from '@asam-ui/ui';
import { computed } from 'vue';
const locale = computed(() => ({
'basic-usage': 'ui032-cap-change-basic-usage',
'horizontal-mode': 'ui032-cap-change-horizontal-mode',
'scroll-container': 'ui032-cap-change-scroll-container',
'anchor-api': 'ui032-cap-change-anchor-api',
'anchor-attributes': 'ui032-cap-change-anchor-attributes',
'anchor-events': 'ui032-cap-change-anchor-events',
'Basic Usage': '基础用法',
'Horizontal Mode': '水平模式',
'Scroll Container': '滚动容器',
'Anchor API': '锚点 API',
'Anchor Attributes': '锚点属性',
'Anchor Events': '锚点事件'
}));
const handleChange = (href) => {
console.log(`anchor change: ${href}`);
};
</script>
下划线类型 ​
设置type="underline"以更改为下划线类型
下划线
<template>
<AsamAnchor type="underline" :offset="70">
<AsamAnchorLink :href="`#${locale['basic-usage']}`">
{{ locale['Basic Usage'] }}
</AsamAnchorLink>
<AsamAnchorLink :href="`#${locale['horizontal-mode']}`">
{{ locale['Horizontal Mode'] }}
</AsamAnchorLink>
<AsamAnchorLink :href="`#${locale['scroll-container']}`">
{{ locale['Scroll Container'] }}
</AsamAnchorLink>
<AsamAnchorLink :href="`#${locale['anchor-api']}`">
{{ locale['Anchor API'] }}
<template #sub-link>
<AsamAnchorLink :href="`#${locale['anchor-attributes']}`">
{{ locale['Anchor Attributes'] }}
</AsamAnchorLink>
<AsamAnchorLink :href="`#${locale['anchor-events']}`">
{{ locale['Anchor Events'] }}
</AsamAnchorLink>
</template>
</AsamAnchorLink>
</AsamAnchor>
<section
v-for="(target, key) in locale"
:id="key === key.toLowerCase() ? target : undefined"
:key="key"
style="min-height: 180px"
>
{{ target }}
</section>
</template>
<script lang="ts" setup>
defineOptions({ name: 'AsamAnchorCapUnderlineDemo' });
import { AsamAnchor, AsamAnchorLink } from '@asam-ui/ui';
import { computed } from 'vue';
const locale = computed(() => ({
'basic-usage': 'ui032-cap-underline-basic-usage',
'horizontal-mode': 'ui032-cap-underline-horizontal-mode',
'scroll-container': 'ui032-cap-underline-scroll-container',
'anchor-api': 'ui032-cap-underline-anchor-api',
'anchor-attributes': 'ui032-cap-underline-anchor-attributes',
'anchor-events': 'ui032-cap-underline-anchor-events',
'Basic Usage': '基础用法',
'Horizontal Mode': '水平模式',
'Scroll Container': '滚动容器',
'Anchor API': '锚点 API',
'Anchor Attributes': '锚点属性',
'Anchor Events': '锚点事件'
}));
</script>
<template>
<AsamAnchor type="underline" :offset="70">
<AsamAnchorLink :href="`#${locale['basic-usage']}`">
{{ locale['Basic Usage'] }}
</AsamAnchorLink>
<AsamAnchorLink :href="`#${locale['horizontal-mode']}`">
{{ locale['Horizontal Mode'] }}
</AsamAnchorLink>
<AsamAnchorLink :href="`#${locale['scroll-container']}`">
{{ locale['Scroll Container'] }}
</AsamAnchorLink>
<AsamAnchorLink :href="`#${locale['anchor-api']}`">
{{ locale['Anchor API'] }}
<template #sub-link>
<AsamAnchorLink :href="`#${locale['anchor-attributes']}`">
{{ locale['Anchor Attributes'] }}
</AsamAnchorLink>
<AsamAnchorLink :href="`#${locale['anchor-events']}`">
{{ locale['Anchor Events'] }}
</AsamAnchorLink>
</template>
</AsamAnchorLink>
</AsamAnchor>
<section
v-for="(target, key) in locale"
:id="key === key.toLowerCase() ? target : undefined"
:key="key"
style="min-height: 180px"
>
{{ target }}
</section>
</template>
<script setup>
defineOptions({ name: 'AsamAnchorCapUnderlineDemo' });
import { AsamAnchor, AsamAnchorLink } from '@asam-ui/ui';
import { computed } from 'vue';
const locale = computed(() => ({
'basic-usage': 'ui032-cap-underline-basic-usage',
'horizontal-mode': 'ui032-cap-underline-horizontal-mode',
'scroll-container': 'ui032-cap-underline-scroll-container',
'anchor-api': 'ui032-cap-underline-anchor-api',
'anchor-attributes': 'ui032-cap-underline-anchor-attributes',
'anchor-events': 'ui032-cap-underline-anchor-events',
'Basic Usage': '基础用法',
'Horizontal Mode': '水平模式',
'Scroll Container': '滚动容器',
'Anchor API': '锚点 API',
'Anchor Attributes': '锚点属性',
'Anchor Events': '锚点事件'
}));
</script>
固定模式 ​
使用 affix 组件来固定住页面中的锚点。
固定模式
<template>
<AsamAffix :offset="60">
<AsamAnchor :offset="70" style="width: 300px">
<AsamAnchorLink :href="`#${locale['basic-usage']}`">
{{ locale['Basic Usage'] }}
</AsamAnchorLink>
<AsamAnchorLink :href="`#${locale['horizontal-mode']}`">
{{ locale['Horizontal Mode'] }}
</AsamAnchorLink>
<AsamAnchorLink :href="`#${locale['scroll-container']}`">
{{ locale['Scroll Container'] }}
</AsamAnchorLink>
<AsamAnchorLink :href="`#${locale['anchor-api']}`">
{{ locale['Anchor API'] }}
<template #sub-link>
<AsamAnchorLink :href="`#${locale['anchor-attributes']}`">
{{ locale['Anchor Attributes'] }}
</AsamAnchorLink>
<AsamAnchorLink :href="`#${locale['anchor-events']}`">
{{ locale['Anchor Events'] }}
</AsamAnchorLink>
</template>
</AsamAnchorLink>
</AsamAnchor>
</AsamAffix>
<section
v-for="(target, key) in locale"
:id="key === key.toLowerCase() ? target : undefined"
:key="key"
style="min-height: 180px"
>
{{ target }}
</section>
</template>
<script lang="ts" setup>
defineOptions({ name: 'AsamAnchorCapAffixDemo' });
import { AsamAffix, AsamAnchor, AsamAnchorLink } from '@asam-ui/ui';
import { computed } from 'vue';
const locale = computed(() => ({
'basic-usage': 'ui032-cap-affix-basic-usage',
'horizontal-mode': 'ui032-cap-affix-horizontal-mode',
'scroll-container': 'ui032-cap-affix-scroll-container',
'anchor-api': 'ui032-cap-affix-anchor-api',
'anchor-attributes': 'ui032-cap-affix-anchor-attributes',
'anchor-events': 'ui032-cap-affix-anchor-events',
'Basic Usage': '基础用法',
'Horizontal Mode': '水平模式',
'Scroll Container': '滚动容器',
'Anchor API': '锚点 API',
'Anchor Attributes': '锚点属性',
'Anchor Events': '锚点事件'
}));
</script>
<template>
<AsamAffix :offset="60">
<AsamAnchor :offset="70" style="width: 300px">
<AsamAnchorLink :href="`#${locale['basic-usage']}`">
{{ locale['Basic Usage'] }}
</AsamAnchorLink>
<AsamAnchorLink :href="`#${locale['horizontal-mode']}`">
{{ locale['Horizontal Mode'] }}
</AsamAnchorLink>
<AsamAnchorLink :href="`#${locale['scroll-container']}`">
{{ locale['Scroll Container'] }}
</AsamAnchorLink>
<AsamAnchorLink :href="`#${locale['anchor-api']}`">
{{ locale['Anchor API'] }}
<template #sub-link>
<AsamAnchorLink :href="`#${locale['anchor-attributes']}`">
{{ locale['Anchor Attributes'] }}
</AsamAnchorLink>
<AsamAnchorLink :href="`#${locale['anchor-events']}`">
{{ locale['Anchor Events'] }}
</AsamAnchorLink>
</template>
</AsamAnchorLink>
</AsamAnchor>
</AsamAffix>
<section
v-for="(target, key) in locale"
:id="key === key.toLowerCase() ? target : undefined"
:key="key"
style="min-height: 180px"
>
{{ target }}
</section>
</template>
<script setup>
defineOptions({ name: 'AsamAnchorCapAffixDemo' });
import { AsamAffix, AsamAnchor, AsamAnchorLink } from '@asam-ui/ui';
import { computed } from 'vue';
const locale = computed(() => ({
'basic-usage': 'ui032-cap-affix-basic-usage',
'horizontal-mode': 'ui032-cap-affix-horizontal-mode',
'scroll-container': 'ui032-cap-affix-scroll-container',
'anchor-api': 'ui032-cap-affix-anchor-api',
'anchor-attributes': 'ui032-cap-affix-anchor-attributes',
'anchor-events': 'ui032-cap-affix-anchor-events',
'Basic Usage': '基础用法',
'Horizontal Mode': '水平模式',
'Scroll Container': '滚动容器',
'Anchor API': '锚点 API',
'Anchor Attributes': '锚点属性',
'Anchor Events': '锚点事件'
}));
</script>
API
属性 AsamAnchorProps
| 属性名 | 说明 | 类型 | 默认值 |
|---|---|---|---|
container | 滚动的容器 | string | Window | HTMLElement | null | undefined | — |
offset | 设置锚点滚动的偏移量 | number | undefined | 0 |
bound | 触发锚点的元素的位置偏移量 | number | undefined | 15 |
duration | 点击锚点时的滚动动画时长,单位毫秒。 | number | undefined | 300 |
marker | 是否显示标记 | boolean | undefined | true |
type | 设置锚点类型 | enum"default" | "underline"完整类型:"default" | "underline" | undefined | "default" |
direction | 设置锚点方向 | enum"horizontal" | "vertical"完整类型:"horizontal" | "vertical" | undefined | "vertical" |
selectScrollTop | 滚动时,链接是否选中位于顶部 | boolean | undefined | false |
onChange | — | ((href: string) => any) | undefined | — |
onClick | — | ((e: MouseEvent, href?: string | undefined) => any) | undefined | — |
key | — | PropertyKey | undefined | — |
ref | — | VNodeRef | undefined | — |
ref_for | — | boolean | undefined | — |
ref_key | — | string | undefined | — |
onVnodeBeforeMount | — | (AsamAnchorProps)["onVnodeBeforeMount"] | — |
onVnodeMounted | — | (AsamAnchorProps)["onVnodeMounted"] | — |
onVnodeBeforeUpdate | — | (AsamAnchorProps)["onVnodeBeforeUpdate"] | — |
onVnodeUpdated | — | (AsamAnchorProps)["onVnodeUpdated"] | — |
onVnodeBeforeUnmount | — | (AsamAnchorProps)["onVnodeBeforeUnmount"] | — |
onVnodeUnmounted | — | (AsamAnchorProps)["onVnodeUnmounted"] | — |
class | — | unknown | — |
style | — | unknown | — |
实例方法与状态 AsamAnchorExpose
| 属性名 | 说明 | 类型 | 默认值 |
|---|---|---|---|
$ | — | AsamAnchorExpose["$"] | — |
$data | — | AsamTableColumnExpose | — |
$props | — | AsamAnchorProps | — |
$attrs | — | AsamAnchorExpose["$attrs"] | — |
$refs | — | AsamAnchorExpose["$refs"] | — |
$slots | — | AsamAnchorSlots | — |
$root | — | 查看完整类型ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string, {}, {}, {}, string, ComponentProvideOptions>, {}, {}, "", {}, any> | null | — |
$parent | — | 查看完整类型ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string, {}, {}, {}, string, ComponentProvideOptions>, {}, {}, "", {}, any> | null | — |
$host | — | Element | null | — |
$emit | — | ((event: "click", e: MouseEvent, href?: string | undefined) => void) & ((event: "change", href: string) => void) | — |
$el | — | any | — |
$options | — | (AsamAnchorExpose)["$options"] | — |
$forceUpdate | — | () => void | — |
$nextTick | — | (AsamAnchorExpose)["$nextTick"] | — |
$watch | — | (AsamAnchorExpose)["$watch"] | — |
type | — | enum"default" | "underline"完整类型:"default" | "underline" | — |
direction | — | enum"horizontal" | "vertical"完整类型:"horizontal" | "vertical" | — |
offset | — | number | — |
marker | — | boolean | — |
duration | — | number | — |
bound | — | number | — |
onClick | — | ((e: MouseEvent, href?: string | undefined) => any) | undefined | — |
onChange | — | ((href: string) => any) | undefined | — |
container | 滚动的容器 | string | Window | HTMLElement | null | undefined | — |
selectScrollTop | 滚动时,链接是否选中位于顶部 | boolean | undefined | — |
scrollTo | — | (href?: string) => void | — |
$route | 当前规范化路由位置,详见 RouteLocationNormalizedLoaded。 | AsamAnchorExpose["$route"] | — |
$router | 应用使用的 Router 实例。 | AsamAnchorExpose["$router"] | — |
类型 AsamAnchorInstance
| 属性名 | 说明 | 类型 | 默认值 |
|---|---|---|---|
$ | — | AsamAnchorExpose["$"] | — |
$data | — | AsamTableColumnExpose | — |
$props | — | AsamAnchorProps | — |
$attrs | — | AsamAnchorExpose["$attrs"] | — |
$refs | — | AsamAnchorExpose["$refs"] | — |
$slots | — | AsamAnchorSlots | — |
$root | — | 查看完整类型ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string, {}, {}, {}, string, ComponentProvideOptions>, {}, {}, "", {}, any> | null | — |
$parent | — | 查看完整类型ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string, {}, {}, {}, string, ComponentProvideOptions>, {}, {}, "", {}, any> | null | — |
$host | — | Element | null | — |
$emit | — | ((event: "click", e: MouseEvent, href?: string | undefined) => void) & ((event: "change", href: string) => void) | — |
$el | — | any | — |
$options | — | (AsamAnchorInstance)["$options"] | — |
$forceUpdate | — | () => void | — |
$nextTick | — | (AsamAnchorInstance)["$nextTick"] | — |
$watch | — | (AsamAnchorInstance)["$watch"] | — |
type | — | enum"default" | "underline"完整类型:"default" | "underline" | — |
direction | — | enum"horizontal" | "vertical"完整类型:"horizontal" | "vertical" | — |
offset | — | number | — |
marker | — | boolean | — |
duration | — | number | — |
bound | — | number | — |
onClick | — | ((e: MouseEvent, href?: string | undefined) => any) | undefined | — |
onChange | — | ((href: string) => any) | undefined | — |
container | 滚动的容器 | string | Window | HTMLElement | null | undefined | — |
selectScrollTop | 滚动时,链接是否选中位于顶部 | boolean | undefined | — |
scrollTo | — | (href?: string) => void | — |
$route | 当前规范化路由位置,详见 RouteLocationNormalizedLoaded。 | AsamAnchorExpose["$route"] | — |
$router | 应用使用的 Router 实例。 | AsamAnchorExpose["$router"] | — |
插槽 AsamAnchorSlots
| 属性名 | 说明 | 类型 | 默认值 |
|---|---|---|---|
default | — | (AsamAnchorSlots)["default"] | — |
事件 AsamAnchorEmits
| 属性名 | 说明 | 类型 | 默认值 |
|---|---|---|---|
change | — | (href: string) => boolean | — |
click | — | (e: MouseEvent, href?: string) => boolean | — |
类型 AsamAnchorPropsPublic
| 属性名 | 说明 | 类型 | 默认值 |
|---|---|---|---|
offset | — | number | undefined | — |
type | — | enum"default" | "underline"完整类型:(AsamAnchorPropsPublic)["type"] | — |
direction | — | enum"horizontal" | "vertical"完整类型:(AsamAnchorPropsPublic)["direction"] | — |
container | — | (AsamAnchorPropsPublic)["container"] | — |
bound | — | number | undefined | — |
duration | — | number | undefined | — |
marker | — | (AsamAnchorPropsPublic)["marker"] | — |
selectScrollTop | — | boolean | undefined | — |
关联组件
参数与事件补充说明
公开绑定参数,包含具备类型的事件监听器;默认值由运行时定义提供。
参数与事件说明
container
必填:否;声明来源:上游声明。
container 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
嵌套展开边界:大型实例类型;完整类型见公开类型视图。
默认值与来源
未知 / 未声明固定上游源码未声明 default(2.14.7;源码事实,未作为 ASAM 运行实测)
offset
必填:否;声明来源:上游声明。
默认值与来源
0(已安装运行时;已安装组件)固定上游源码默认表达式:0(2.14.7;源码事实,未作为 ASAM 运行实测)
bound
必填:否;声明来源:上游声明。
默认值与来源
15(已安装运行时;已安装组件)固定上游源码默认表达式:15(2.14.7;源码事实,未作为 ASAM 运行实测)
duration
必填:否;声明来源:上游声明。
默认值与来源
300(已安装运行时;已安装组件)固定上游源码默认表达式:300(2.14.7;源码事实,未作为 ASAM 运行实测)
marker
必填:否;声明来源:上游声明。
marker 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
默认值与来源
true(已安装运行时;已安装组件)固定上游源码默认表达式:true(2.14.7;源码事实,未作为 ASAM 运行实测)
type
必填:否;声明来源:上游声明。
type 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:"default" / "underline"
默认值与来源
"default"(已安装运行时;已安装组件)固定上游源码默认表达式:'default'(2.14.7;源码事实,未作为 ASAM 运行实测)
direction
必填:否;声明来源:上游声明。
direction 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:"horizontal" / "vertical"
默认值与来源
"vertical"(已安装运行时;已安装组件)固定上游源码默认表达式:'vertical'(2.14.7;源码事实,未作为 ASAM 运行实测)
selectScrollTop
必填:否;声明来源:上游声明。
selectScrollTop 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
默认值与来源
false(隐式 Boolean 默认;已安装组件)onChange
必填:否;声明来源:上游声明。
onChange 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(href: string): any
onClick
必填:否;声明来源:上游声明。
onClick 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(e: MouseEvent, href?: string | undefined): any
key
必填:否;声明来源:依赖声明。
ref
必填:否;声明来源:依赖声明。
ref 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(ref: Element | ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string, {}, {}, {}, string, ComponentProvideOptions>, {}, {}, "", {}, any> | null, refs: Record<string, any>): void
ref.value:any— 依赖声明ref.__@RefSymbol@8854:true— 依赖声明仅用于区分类型:保留在公开声明中,通过私有 Symbol 避免出现在编辑器自动补全中。
枚举:
true
ref_for
必填:否;声明来源:依赖声明。
ref_for 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
ref_key
必填:否;声明来源:依赖声明。
onVnodeBeforeMount
必填:否;声明来源:依赖声明。
onVnodeBeforeMount 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(vnode: VNode<RendererNode, RendererElement, { [key: string]: any; }>): void
onVnodeMounted
必填:否;声明来源:依赖声明。
onVnodeMounted 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(vnode: VNode<RendererNode, RendererElement, { [key: string]: any; }>): void
onVnodeBeforeUpdate
必填:否;声明来源:依赖声明。
onVnodeBeforeUpdate 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(vnode: VNode<RendererNode, RendererElement, { [key: string]: any; }>, oldVNode: VNode<RendererNode, RendererElement, { [key: string]: any; }>): void
onVnodeUpdated
必填:否;声明来源:依赖声明。
onVnodeUpdated 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(vnode: VNode<RendererNode, RendererElement, { [key: string]: any; }>, oldVNode: VNode<RendererNode, RendererElement, { [key: string]: any; }>): void
onVnodeBeforeUnmount
必填:否;声明来源:依赖声明。
onVnodeBeforeUnmount 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(vnode: VNode<RendererNode, RendererElement, { [key: string]: any; }>): void
onVnodeUnmounted
必填:否;声明来源:依赖声明。
onVnodeUnmounted 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(vnode: VNode<RendererNode, RendererElement, { [key: string]: any; }>): void
class
必填:否;声明来源:依赖声明。
style
必填:否;声明来源:依赖声明。
AsamAnchorProps 公开类型视图
import type { VNodeRef, ComponentPublicInstance, ComponentOptionsBase, ComponentProvideOptions, VNode, RendererNode, RendererElement } from 'vue';
import type { AsamAnchorProps, AsamAnchorExpose } from '@asam-ui/ui';
type PublicMember<T, K extends PropertyKey> = T extends unknown ? K extends keyof T ? T[K] : never : never;
// AsamAnchorProps
type PublicContract = {
readonly "container"?: string | Window | HTMLElement | null | undefined;
readonly "offset"?: number | undefined;
readonly "bound"?: number | undefined;
readonly "duration"?: number | undefined;
readonly "marker"?: boolean | undefined;
readonly "type"?: "default" | "underline" | undefined;
readonly "direction"?: "horizontal" | "vertical" | undefined;
readonly "selectScrollTop"?: boolean | undefined;
readonly "onChange"?: ((href: string) => any) | undefined;
readonly "onClick"?: ((e: MouseEvent, href?: string | undefined) => any) | undefined;
"key"?: PropertyKey | undefined;
"ref"?: VNodeRef | undefined;
"ref_for"?: boolean | undefined;
"ref_key"?: string | undefined;
"onVnodeBeforeMount"?: (AsamAnchorProps)["onVnodeBeforeMount"];
"onVnodeMounted"?: (AsamAnchorProps)["onVnodeMounted"];
"onVnodeBeforeUpdate"?: (AsamAnchorProps)["onVnodeBeforeUpdate"];
"onVnodeUpdated"?: (AsamAnchorProps)["onVnodeUpdated"];
"onVnodeBeforeUnmount"?: (AsamAnchorProps)["onVnodeBeforeUnmount"];
"onVnodeUnmounted"?: (AsamAnchorProps)["onVnodeUnmounted"];
"class"?: unknown;
"style"?: unknown;
};
完整的上游实例,包含全部公开方法与响应式状态。
参数与事件说明
$
必填:是;声明来源:依赖声明。
$ 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
嵌套展开边界:框架 / 平台类型;完整类型见公开类型视图。
$data
必填:是;声明来源:依赖声明。
$props
必填:是;声明来源:依赖声明。
$attrs
必填:是;声明来源:依赖声明。
$attrs 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
嵌套展开边界:框架 / 平台类型;完整类型见公开类型视图。
$refs
必填:是;声明来源:依赖声明。
$refs 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
嵌套展开边界:框架 / 平台类型;完整类型见公开类型视图。
$slots
必填:是;声明来源:依赖声明。
$root
必填:是;声明来源:依赖声明。
$parent
必填:是;声明来源:依赖声明。
$host
必填:是;声明来源:依赖声明。
$host 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
嵌套展开边界:大型实例类型;完整类型见公开类型视图。
$emit
必填:是;声明来源:依赖声明。
$emit 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(event: "click", ...args: [e: MouseEvent, href?: string | undefined]): void
事件参数:(event: "change", ...args: [href: string]): void
$el
必填:是;声明来源:依赖声明。
$options
必填:是;声明来源:依赖声明。
$forceUpdate
必填:是;声明来源:依赖声明。
$forceUpdate 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(): void
嵌套展开边界:框架 / 平台类型;完整类型见公开类型视图。
$nextTick
必填:是;声明来源:依赖声明。
$nextTick 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(): Promise<void>
事件参数:<T, R>(this: T, fn: (this: T) => R | Promise<R>): Promise<R>
嵌套展开边界:框架 / 平台类型;完整类型见公开类型视图。
$watch
必填:是;声明来源:依赖声明。
$watch 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:<T extends string | ((...args: any) => any)>(source: T, cb: Parameters<Extract<NonNullable<(AsamAnchorExpose)["$watch"]>, (...args: never[]) => unknown>>[1], options?: WatchOptions<boolean> | undefined): WatchStopHandle
嵌套展开边界:框架 / 平台类型;完整类型见公开类型视图。
type
必填:是;声明来源:上游声明。
type 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:"default" / "underline"
direction
必填:是;声明来源:上游声明。
direction 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:"horizontal" / "vertical"
offset
必填:是;声明来源:上游声明。
marker
必填:是;声明来源:上游声明。
marker 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
duration
必填:是;声明来源:上游声明。
bound
必填:是;声明来源:上游声明。
onClick
必填:否;声明来源:上游声明。
onClick 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(e: MouseEvent, href?: string | undefined): any
onChange
必填:否;声明来源:上游声明。
onChange 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(href: string): any
container
必填:否;声明来源:上游声明。
container 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
嵌套展开边界:大型实例类型;完整类型见公开类型视图。
默认值与来源
未知 / 未声明固定上游源码未声明 default(2.14.7;源码事实,未作为 ASAM 运行实测)
selectScrollTop
必填:否;声明来源:上游声明。
selectScrollTop 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
scrollTo
必填:是;声明来源:上游声明。
scrollTo 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(href?: string | undefined): void
$route
必填:是;声明来源:依赖声明。
$route 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
$route.matched:(NonNullable<AsamAnchorExpose["$route"]>)["matched"]— 依赖声明仅包含普通组件的 RouteLocationMatched 数组;懒加载组件已解析并替换 components 中的值,可直接展示路由,不包含重定向记录。此属性不可枚举。
嵌套展开边界:框架 / 平台类型;完整类型见公开类型视图。
$route.name:(NonNullable<AsamAnchorExpose["$route"]>)["name"]— 依赖声明匹配路由记录的名称。
$route.fullPath:string— 依赖声明包含 search 和 hash 的完整位置字符串,使用百分号编码。
$route.query:(NonNullable<AsamAnchorExpose["$route"]>)["query"]— 依赖声明当前位置 search 属性的对象表示。
$route.hash:string— 依赖声明当前位置的哈希片段;存在时以 # 开头。
$route.redirectedFrom:(NonNullable<AsamAnchorExpose["$route"]>)["redirectedFrom"]— 依赖声明最终到达当前位置之前,最初尝试访问的位置。
$route.redirectedFrom.matched:PublicMember<NonNullable<(NonNullable<AsamAnchorExpose["$route"]>)["redirectedFrom"]>, "matched">— 依赖声明包含添加路由时原始组件的 RouteRecord 数组,也可能包含重定向记录,不能直接用于展示。此属性不可枚举。
嵌套展开边界:框架 / 平台类型;完整类型见公开类型视图。
$route.redirectedFrom.fullPath:string— 依赖声明包含 search 和 hash 的完整位置字符串,使用百分号编码。
$route.redirectedFrom.query:PublicMember<NonNullable<(NonNullable<AsamAnchorExpose["$route"]>)["redirectedFrom"]>, "query">— 依赖声明当前位置 search 属性的对象表示。
$route.redirectedFrom.hash:string— 依赖声明当前位置的哈希片段;存在时以 # 开头。
$route.redirectedFrom.redirectedFrom:PublicMember<NonNullable<(NonNullable<AsamAnchorExpose["$route"]>)["redirectedFrom"]>, "redirectedFrom">— 依赖声明最终到达当前位置之前,最初尝试访问的位置。
嵌套展开边界:递归引用;完整类型见公开类型视图。
$route.redirectedFrom.name:PublicMember<NonNullable<(NonNullable<AsamAnchorExpose["$route"]>)["redirectedFrom"]>, "name">— 依赖声明匹配路由记录的名称。
$route.redirectedFrom.meta:PublicMember<NonNullable<(NonNullable<AsamAnchorExpose["$route"]>)["redirectedFrom"]>, "meta">— 依赖声明全部匹配路由记录合并后的 meta 属性。
$route.redirectedFrom.params:PublicMember<NonNullable<(NonNullable<AsamAnchorExpose["$route"]>)["redirectedFrom"]>, "params">— 依赖声明从 path 提取并解码后的参数对象。
$route.redirectedFrom.path:string— 依赖声明URL 中经过百分号编码的路径部分。
$route.redirectedFrom.replace:boolean | undefined— 依赖声明替换当前历史记录,而不是添加新记录。
枚举:
false/true$route.redirectedFrom.force:boolean | undefined— 依赖声明即使目标与当前位置相同,也触发导航;除非传入 replace: true,否则会添加一条历史记录。
枚举:
false/true$route.redirectedFrom.state:PublicMember<NonNullable<(NonNullable<AsamAnchorExpose["$route"]>)["redirectedFrom"]>, "state">— 依赖声明通过 History API 保存的状态;不能包含响应式值,也不允许 Symbol 等部分值。详情参见 https://developer.mozilla.org/zh-CN/docs/Web/API/History/state。
$route.meta:(NonNullable<AsamAnchorExpose["$route"]>)["meta"]— 依赖声明全部匹配路由记录合并后的 meta 属性。
$route.params:(NonNullable<AsamAnchorExpose["$route"]>)["params"]— 依赖声明从 path 提取并解码后的参数对象。
$route.path:string— 依赖声明URL 中经过百分号编码的路径部分。
$router
必填:是;声明来源:依赖声明。
$router 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
$router.options:(NonNullable<AsamAnchorExpose["$router"]>)["options"]— 依赖声明创建路由器时传入的原始配置对象。
$router.options.routes:(NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["options"]>)["routes"]— 依赖声明需要添加到路由器的初始路由列表。
嵌套展开边界:框架 / 平台类型;完整类型见公开类型视图。
$router.options.history:(NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["options"]>)["history"]— 依赖声明路由器使用的历史记录实现。通常使用 createWebHistory,并配置服务器回退;createWebHashHistory 无需服务器配置,但搜索引擎无法处理其哈希路由,影响搜索优化。
$router.options.history.base:string— 依赖声明添加到每个 URL 前的基础路径;例如 base 为 /sub-folder 时,可将单页应用部署在域名的对应子目录。
嵌套展开边界:深度上限;完整类型见公开类型视图。
$router.options.history.location:string— 依赖声明当前历史记录位置。
嵌套展开边界:深度上限;完整类型见公开类型视图。
$router.options.history.state:(NonNullable<(NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["options"]>)["history"]>)["state"]— 依赖声明当前历史记录状态。
嵌套展开边界:深度上限;完整类型见公开类型视图。
$router.options.history.push:(NonNullable<(NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["options"]>)["history"]>)["push"]— 依赖声明导航到指定位置;使用 HTML5 History 时,通过 history.pushState 实际更新 URL。
事件参数:
(to: string, data?: Parameters<Extract<NonNullable<(NonNullable<(NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["options"]>)["history"]>)["push"]>, (...args: never[]) => unknown>>[1]): void嵌套展开边界:深度上限;完整类型见公开类型视图。
$router.options.history.replace:(NonNullable<(NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["options"]>)["history"]>)["replace"]— 依赖声明与 RouterHistory.push 类似,但调用 history.replaceState,而非 history.pushState。
事件参数:
(to: string, data?: Parameters<Extract<NonNullable<(NonNullable<(NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["options"]>)["history"]>)["replace"]>, (...args: never[]) => unknown>>[1]): void嵌套展开边界:深度上限;完整类型见公开类型视图。
$router.options.history.go:(delta: number, triggerListeners?: boolean) => void— 依赖声明按指定方向遍历历史记录。
事件参数:
(delta: number, triggerListeners?: boolean | undefined): void嵌套展开边界:深度上限;完整类型见公开类型视图。
$router.options.history.listen:(NonNullable<(NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["options"]>)["history"]>)["listen"]— 依赖声明为历史记录实现添加监听器;由浏览器前进、后退等外部导航,或传入 true 的 RouterHistory.back、RouterHistory.forward 触发。
事件参数:
(callback: Parameters<Extract<NonNullable<(NonNullable<(NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["options"]>)["history"]>)["listen"]>, (...args: never[]) => unknown>>[0]): () => void嵌套展开边界:深度上限;完整类型见公开类型视图。
$router.options.history.createHref:(NonNullable<(NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["options"]>)["history"]>)["createHref"]— 依赖声明生成用于链接元素的对应 href。
事件参数:
(location: string): string嵌套展开边界:深度上限;完整类型见公开类型视图。
$router.options.history.destroy:() => void— 依赖声明清除历史记录实现注册的全部事件监听器。
事件参数:
(): void嵌套展开边界:深度上限;完整类型见公开类型视图。
$router.options.scrollBehavior:(NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["options"]>)["scrollBehavior"]— 依赖声明控制页面导航时滚动行为的函数;可返回 Promise 延迟滚动。
事件参数:
(to: Parameters<Extract<NonNullable<(NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["options"]>)["scrollBehavior"]>, (...args: never[]) => unknown>>[0], from: AsamAnchorExpose["$route"], savedPosition: Parameters<Extract<NonNullable<(NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["options"]>)["scrollBehavior"]>, (...args: never[]) => unknown>>[2]): ReturnType<Extract<NonNullable<(NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["options"]>)["scrollBehavior"]>, (...args: never[]) => unknown>>$router.options.parseQuery:(NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["options"]>)["parseQuery"]— 依赖声明自定义查询参数解析函数;与 EXPERIMENTAL_RouterOptions_Base.stringifyQuery 配套。
事件参数:
(search: string): ReturnType<Extract<NonNullable<(NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["options"]>)["parseQuery"]>, (...args: never[]) => unknown>>$router.options.stringifyQuery:(NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["options"]>)["stringifyQuery"]— 依赖声明自定义查询对象序列化函数;不要添加开头的 ?,与 parseQuery 的解析函数配套。
事件参数:
(query: Parameters<Extract<NonNullable<(NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["options"]>)["stringifyQuery"]>, (...args: never[]) => unknown>>[0]): string$router.options.linkActiveClass:string | undefined— 依赖声明应用于激活 RouterLink 的默认类名;未指定时使用 router-link-active。
$router.options.linkExactActiveClass:string | undefined— 依赖声明应用于精确激活 RouterLink 的默认类名;未指定时使用 router-link-exact-active。
$router.options.end:boolean | undefined— 依赖声明是否在表达式末尾添加 $,使其匹配到路径结尾。
声明默认:
`true`(注释,实际运行默认以源码/安装包为准)枚举:
false/true$router.options.sensitive:boolean | undefined— 依赖声明使正则表达式区分大小写。
声明默认:
`false`(注释,实际运行默认以源码/安装包为准)枚举:
false/true$router.options.strict:boolean | undefined— 依赖声明是否禁止路径末尾的斜杠。
声明默认:
`false`(注释,实际运行默认以源码/安装包为准)枚举:
false/true
$router.addRoute:(NonNullable<AsamAnchorExpose["$router"]>)["addRoute"]— 依赖声明向已有路由添加子路由,或向路由器添加新的 RouteRecordRaw 路由记录。
事件参数完整签名见公开类型视图。
事件参数完整签名见公开类型视图。
$router.removeRoute:(NonNullable<AsamAnchorExpose["$router"]>)["removeRoute"]— 依赖声明按名称移除已有路由。
事件参数:
(name: Parameters<Extract<NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["removeRoute"]>, (...args: never[]) => unknown>>[0]): void$router.clearRoutes:() => void— 依赖声明从路由器中删除全部路由。
事件参数:
(): void$router.currentRoute:ShallowRef<AsamAnchorExpose["$route"]>— 依赖声明当前 RouteLocationNormalized。
嵌套展开边界:框架 / 平台类型;完整类型见公开类型视图。
$router.listening:boolean— 依赖声明允许关闭历史事件监听,这是用于微前端的底层 API。
枚举:
false/true$router.hasRoute:(NonNullable<AsamAnchorExpose["$router"]>)["hasRoute"]— 依赖声明检查指定名称的路由是否存在。
事件参数:
(name: Parameters<Extract<NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["hasRoute"]>, (...args: never[]) => unknown>>[0]): boolean$router.getRoutes:(NonNullable<AsamAnchorExpose["$router"]>)["getRoutes"]— 依赖声明获取全部 RouteRecord 路由记录的完整列表。
事件参数:
(): ReturnType<Extract<NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["getRoutes"]>, (...args: never[]) => unknown>>$router.resolve:(NonNullable<AsamAnchorExpose["$router"]>)["resolve"]— 依赖声明返回 RouteLocationRaw 的规范化位置,包含带基础路径的 href;默认使用 router.currentRoute 作为 currentLocation,仅在高级场景中覆盖。
事件参数完整签名见公开类型视图。
事件参数完整签名见公开类型视图。
$router.push:(NonNullable<AsamAnchorExpose["$router"]>)["push"]— 依赖声明通过向历史栈添加记录,以编程方式导航到新 URL。
事件参数:
(to: Parameters<Extract<NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["push"]>, (...args: never[]) => unknown>>[0]): ReturnType<Extract<NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["push"]>, (...args: never[]) => unknown>>$router.replace:(NonNullable<AsamAnchorExpose["$router"]>)["replace"]— 依赖声明通过替换历史栈中的当前记录,以编程方式导航到新 URL。
事件参数:
(to: Parameters<Extract<NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["replace"]>, (...args: never[]) => unknown>>[0]): ReturnType<Extract<NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["replace"]>, (...args: never[]) => unknown>>$router.back:() => void— 依赖声明通过 history.back() 在可用时后退,等价于 router.go(-1)。
事件参数:
(): void$router.forward:() => void— 依赖声明通过 history.forward() 在可用时前进,等价于 router.go(1)。
事件参数:
(): void$router.go:(delta: number) => void— 依赖声明通过调用 history.go() 在历史记录中前进或后退。
事件参数:
(delta: number): void$router.beforeEach:(NonNullable<AsamAnchorExpose["$router"]>)["beforeEach"]— 依赖声明添加每次导航之前执行的守卫,并返回移除此守卫的函数。
事件参数:
(guard: Parameters<Extract<NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["beforeEach"]>, (...args: never[]) => unknown>>[0]): () => void$router.beforeResolve:(NonNullable<AsamAnchorExpose["$router"]>)["beforeResolve"]— 依赖声明添加导航确认之前执行的守卫,此时组件已获取且其他导航守卫已通过;返回移除此守卫的函数。
事件参数:
(guard: Parameters<Extract<NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["beforeResolve"]>, (...args: never[]) => unknown>>[0]): () => void$router.afterEach:(NonNullable<AsamAnchorExpose["$router"]>)["afterEach"]— 依赖声明添加每次导航结束后执行的钩子,并返回移除此钩子的函数。
事件参数:
(guard: Parameters<Extract<NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["afterEach"]>, (...args: never[]) => unknown>>[0]): () => void$router.onError:(NonNullable<AsamAnchorExpose["$router"]>)["onError"]— 依赖声明添加导航期间未捕获错误的处理函数,涵盖同步和异步异常、守卫返回或传给 next 的错误,以及路由异步组件解析错误。
事件参数:
(handler: Parameters<Extract<NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["onError"]>, (...args: never[]) => unknown>>[0]): () => void$router.isReady:() => Promise<void>— 依赖声明返回在初次导航完成后兑现的 Promise,此时关联的异步进入钩子与异步组件均已解析;导航已完成时立即兑现。可用于保持服务端与客户端渲染一致;服务端需手动推入初始位置,客户端从 URL 自动读取。
事件参数:
(): Promise<void>$router.install:(app: App) => void— 依赖声明由 app.use(router) 自动调用,用户不应手动调用;客户端调用时会触发初次导航。
事件参数:
(app: App<any>): void
AsamAnchorExpose 公开类型视图
import type { ComponentPublicInstance, ComponentOptionsBase, ComponentProvideOptions, ComponentOptionsMixin, GlobalComponents, GlobalDirectives, WatchOptions, WatchStopHandle, ShallowRef, App } from 'vue';
import type { AsamAnchorExpose, AsamTableColumnExpose, AsamAnchorProps, AsamAnchorSlots } from '@asam-ui/ui';
type PublicMember<T, K extends PropertyKey> = T extends unknown ? K extends keyof T ? T[K] : never : never;
// AsamAnchorExpose
type PublicContract = {
"$": AsamAnchorExpose["$"];
"$data": AsamTableColumnExpose;
"$props": AsamAnchorProps;
"$attrs": AsamAnchorExpose["$attrs"];
"$refs": AsamAnchorExpose["$refs"];
"$slots": AsamAnchorSlots;
"$root": ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string, {}, {}, {}, string, ComponentProvideOptions>, {}, {}, "", {}, any> | null;
"$parent": ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string, {}, {}, {}, string, ComponentProvideOptions>, {}, {}, "", {}, any> | null;
"$host": Element | null;
"$emit": ((event: "click", e: MouseEvent, href?: string | undefined) => void) & ((event: "change", href: string) => void);
"$el": any;
"$options": (AsamAnchorExpose)["$options"];
"$forceUpdate": () => void;
"$nextTick": (AsamAnchorExpose)["$nextTick"];
"$watch": (AsamAnchorExpose)["$watch"];
readonly "type": "default" | "underline";
readonly "direction": "horizontal" | "vertical";
readonly "offset": number;
readonly "marker": boolean;
readonly "duration": number;
readonly "bound": number;
readonly "onClick"?: ((e: MouseEvent, href?: string | undefined) => any) | undefined;
readonly "onChange"?: ((href: string) => any) | undefined;
readonly "container"?: string | Window | HTMLElement | null | undefined;
readonly "selectScrollTop"?: boolean | undefined;
"scrollTo": (href?: string) => void;
"$route": AsamAnchorExpose["$route"];
"$router": AsamAnchorExpose["$router"];
};
参数与事件说明
$
必填:是;声明来源:依赖声明。
$ 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
嵌套展开边界:框架 / 平台类型;完整类型见公开类型视图。
$data
必填:是;声明来源:依赖声明。
$props
必填:是;声明来源:依赖声明。
$attrs
必填:是;声明来源:依赖声明。
$attrs 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
嵌套展开边界:框架 / 平台类型;完整类型见公开类型视图。
$refs
必填:是;声明来源:依赖声明。
$refs 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
嵌套展开边界:框架 / 平台类型;完整类型见公开类型视图。
$slots
必填:是;声明来源:依赖声明。
$root
必填:是;声明来源:依赖声明。
$parent
必填:是;声明来源:依赖声明。
$host
必填:是;声明来源:依赖声明。
$host 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
嵌套展开边界:大型实例类型;完整类型见公开类型视图。
$emit
必填:是;声明来源:依赖声明。
$emit 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(event: "click", ...args: [e: MouseEvent, href?: string | undefined]): void
事件参数:(event: "change", ...args: [href: string]): void
$el
必填:是;声明来源:依赖声明。
$options
必填:是;声明来源:依赖声明。
$forceUpdate
必填:是;声明来源:依赖声明。
$forceUpdate 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(): void
嵌套展开边界:框架 / 平台类型;完整类型见公开类型视图。
$nextTick
必填:是;声明来源:依赖声明。
$nextTick 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(): Promise<void>
事件参数:<T, R>(this: T, fn: (this: T) => R | Promise<R>): Promise<R>
嵌套展开边界:框架 / 平台类型;完整类型见公开类型视图。
$watch
必填:是;声明来源:依赖声明。
$watch 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:<T extends string | ((...args: any) => any)>(source: T, cb: Parameters<Extract<NonNullable<(AsamAnchorInstance)["$watch"]>, (...args: never[]) => unknown>>[1], options?: WatchOptions<boolean> | undefined): WatchStopHandle
嵌套展开边界:框架 / 平台类型;完整类型见公开类型视图。
type
必填:是;声明来源:上游声明。
type 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:"default" / "underline"
direction
必填:是;声明来源:上游声明。
direction 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:"horizontal" / "vertical"
offset
必填:是;声明来源:上游声明。
marker
必填:是;声明来源:上游声明。
marker 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
duration
必填:是;声明来源:上游声明。
bound
必填:是;声明来源:上游声明。
onClick
必填:否;声明来源:上游声明。
onClick 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(e: MouseEvent, href?: string | undefined): any
onChange
必填:否;声明来源:上游声明。
onChange 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(href: string): any
container
必填:否;声明来源:上游声明。
container 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
嵌套展开边界:大型实例类型;完整类型见公开类型视图。
默认值与来源
未知 / 未声明固定上游源码未声明 default(2.14.7;源码事实,未作为 ASAM 运行实测)
selectScrollTop
必填:否;声明来源:上游声明。
selectScrollTop 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
scrollTo
必填:是;声明来源:上游声明。
scrollTo 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(href?: string | undefined): void
$route
必填:是;声明来源:依赖声明。
$route 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
$route.matched:(NonNullable<AsamAnchorExpose["$route"]>)["matched"]— 依赖声明仅包含普通组件的 RouteLocationMatched 数组;懒加载组件已解析并替换 components 中的值,可直接展示路由,不包含重定向记录。此属性不可枚举。
嵌套展开边界:框架 / 平台类型;完整类型见公开类型视图。
$route.name:(NonNullable<AsamAnchorExpose["$route"]>)["name"]— 依赖声明匹配路由记录的名称。
$route.fullPath:string— 依赖声明包含 search 和 hash 的完整位置字符串,使用百分号编码。
$route.query:(NonNullable<AsamAnchorExpose["$route"]>)["query"]— 依赖声明当前位置 search 属性的对象表示。
$route.hash:string— 依赖声明当前位置的哈希片段;存在时以 # 开头。
$route.redirectedFrom:(NonNullable<AsamAnchorExpose["$route"]>)["redirectedFrom"]— 依赖声明最终到达当前位置之前,最初尝试访问的位置。
$route.redirectedFrom.matched:PublicMember<NonNullable<(NonNullable<AsamAnchorExpose["$route"]>)["redirectedFrom"]>, "matched">— 依赖声明包含添加路由时原始组件的 RouteRecord 数组,也可能包含重定向记录,不能直接用于展示。此属性不可枚举。
嵌套展开边界:框架 / 平台类型;完整类型见公开类型视图。
$route.redirectedFrom.fullPath:string— 依赖声明包含 search 和 hash 的完整位置字符串,使用百分号编码。
$route.redirectedFrom.query:PublicMember<NonNullable<(NonNullable<AsamAnchorExpose["$route"]>)["redirectedFrom"]>, "query">— 依赖声明当前位置 search 属性的对象表示。
$route.redirectedFrom.hash:string— 依赖声明当前位置的哈希片段;存在时以 # 开头。
$route.redirectedFrom.redirectedFrom:PublicMember<NonNullable<(NonNullable<AsamAnchorExpose["$route"]>)["redirectedFrom"]>, "redirectedFrom">— 依赖声明最终到达当前位置之前,最初尝试访问的位置。
嵌套展开边界:递归引用;完整类型见公开类型视图。
$route.redirectedFrom.name:PublicMember<NonNullable<(NonNullable<AsamAnchorExpose["$route"]>)["redirectedFrom"]>, "name">— 依赖声明匹配路由记录的名称。
$route.redirectedFrom.meta:PublicMember<NonNullable<(NonNullable<AsamAnchorExpose["$route"]>)["redirectedFrom"]>, "meta">— 依赖声明全部匹配路由记录合并后的 meta 属性。
$route.redirectedFrom.params:PublicMember<NonNullable<(NonNullable<AsamAnchorExpose["$route"]>)["redirectedFrom"]>, "params">— 依赖声明从 path 提取并解码后的参数对象。
$route.redirectedFrom.path:string— 依赖声明URL 中经过百分号编码的路径部分。
$route.redirectedFrom.replace:boolean | undefined— 依赖声明替换当前历史记录,而不是添加新记录。
枚举:
false/true$route.redirectedFrom.force:boolean | undefined— 依赖声明即使目标与当前位置相同,也触发导航;除非传入 replace: true,否则会添加一条历史记录。
枚举:
false/true$route.redirectedFrom.state:PublicMember<NonNullable<(NonNullable<AsamAnchorExpose["$route"]>)["redirectedFrom"]>, "state">— 依赖声明通过 History API 保存的状态;不能包含响应式值,也不允许 Symbol 等部分值。详情参见 https://developer.mozilla.org/zh-CN/docs/Web/API/History/state。
$route.meta:(NonNullable<AsamAnchorExpose["$route"]>)["meta"]— 依赖声明全部匹配路由记录合并后的 meta 属性。
$route.params:(NonNullable<AsamAnchorExpose["$route"]>)["params"]— 依赖声明从 path 提取并解码后的参数对象。
$route.path:string— 依赖声明URL 中经过百分号编码的路径部分。
$router
必填:是;声明来源:依赖声明。
$router 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
$router.options:(NonNullable<AsamAnchorExpose["$router"]>)["options"]— 依赖声明创建路由器时传入的原始配置对象。
$router.options.routes:(NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["options"]>)["routes"]— 依赖声明需要添加到路由器的初始路由列表。
嵌套展开边界:框架 / 平台类型;完整类型见公开类型视图。
$router.options.history:(NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["options"]>)["history"]— 依赖声明路由器使用的历史记录实现。通常使用 createWebHistory,并配置服务器回退;createWebHashHistory 无需服务器配置,但搜索引擎无法处理其哈希路由,影响搜索优化。
$router.options.history.base:string— 依赖声明添加到每个 URL 前的基础路径;例如 base 为 /sub-folder 时,可将单页应用部署在域名的对应子目录。
嵌套展开边界:深度上限;完整类型见公开类型视图。
$router.options.history.location:string— 依赖声明当前历史记录位置。
嵌套展开边界:深度上限;完整类型见公开类型视图。
$router.options.history.state:(NonNullable<(NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["options"]>)["history"]>)["state"]— 依赖声明当前历史记录状态。
嵌套展开边界:深度上限;完整类型见公开类型视图。
$router.options.history.push:(NonNullable<(NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["options"]>)["history"]>)["push"]— 依赖声明导航到指定位置;使用 HTML5 History 时,通过 history.pushState 实际更新 URL。
事件参数:
(to: string, data?: Parameters<Extract<NonNullable<(NonNullable<(NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["options"]>)["history"]>)["push"]>, (...args: never[]) => unknown>>[1]): void嵌套展开边界:深度上限;完整类型见公开类型视图。
$router.options.history.replace:(NonNullable<(NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["options"]>)["history"]>)["replace"]— 依赖声明与 RouterHistory.push 类似,但调用 history.replaceState,而非 history.pushState。
事件参数:
(to: string, data?: Parameters<Extract<NonNullable<(NonNullable<(NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["options"]>)["history"]>)["replace"]>, (...args: never[]) => unknown>>[1]): void嵌套展开边界:深度上限;完整类型见公开类型视图。
$router.options.history.go:(delta: number, triggerListeners?: boolean) => void— 依赖声明按指定方向遍历历史记录。
事件参数:
(delta: number, triggerListeners?: boolean | undefined): void嵌套展开边界:深度上限;完整类型见公开类型视图。
$router.options.history.listen:(NonNullable<(NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["options"]>)["history"]>)["listen"]— 依赖声明为历史记录实现添加监听器;由浏览器前进、后退等外部导航,或传入 true 的 RouterHistory.back、RouterHistory.forward 触发。
事件参数:
(callback: Parameters<Extract<NonNullable<(NonNullable<(NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["options"]>)["history"]>)["listen"]>, (...args: never[]) => unknown>>[0]): () => void嵌套展开边界:深度上限;完整类型见公开类型视图。
$router.options.history.createHref:(NonNullable<(NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["options"]>)["history"]>)["createHref"]— 依赖声明生成用于链接元素的对应 href。
事件参数:
(location: string): string嵌套展开边界:深度上限;完整类型见公开类型视图。
$router.options.history.destroy:() => void— 依赖声明清除历史记录实现注册的全部事件监听器。
事件参数:
(): void嵌套展开边界:深度上限;完整类型见公开类型视图。
$router.options.scrollBehavior:(NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["options"]>)["scrollBehavior"]— 依赖声明控制页面导航时滚动行为的函数;可返回 Promise 延迟滚动。
事件参数:
(to: Parameters<Extract<NonNullable<(NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["options"]>)["scrollBehavior"]>, (...args: never[]) => unknown>>[0], from: AsamAnchorExpose["$route"], savedPosition: Parameters<Extract<NonNullable<(NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["options"]>)["scrollBehavior"]>, (...args: never[]) => unknown>>[2]): ReturnType<Extract<NonNullable<(NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["options"]>)["scrollBehavior"]>, (...args: never[]) => unknown>>$router.options.parseQuery:(NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["options"]>)["parseQuery"]— 依赖声明自定义查询参数解析函数;与 EXPERIMENTAL_RouterOptions_Base.stringifyQuery 配套。
事件参数:
(search: string): ReturnType<Extract<NonNullable<(NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["options"]>)["parseQuery"]>, (...args: never[]) => unknown>>$router.options.stringifyQuery:(NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["options"]>)["stringifyQuery"]— 依赖声明自定义查询对象序列化函数;不要添加开头的 ?,与 parseQuery 的解析函数配套。
事件参数:
(query: Parameters<Extract<NonNullable<(NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["options"]>)["stringifyQuery"]>, (...args: never[]) => unknown>>[0]): string$router.options.linkActiveClass:string | undefined— 依赖声明应用于激活 RouterLink 的默认类名;未指定时使用 router-link-active。
$router.options.linkExactActiveClass:string | undefined— 依赖声明应用于精确激活 RouterLink 的默认类名;未指定时使用 router-link-exact-active。
$router.options.end:boolean | undefined— 依赖声明是否在表达式末尾添加 $,使其匹配到路径结尾。
声明默认:
`true`(注释,实际运行默认以源码/安装包为准)枚举:
false/true$router.options.sensitive:boolean | undefined— 依赖声明使正则表达式区分大小写。
声明默认:
`false`(注释,实际运行默认以源码/安装包为准)枚举:
false/true$router.options.strict:boolean | undefined— 依赖声明是否禁止路径末尾的斜杠。
声明默认:
`false`(注释,实际运行默认以源码/安装包为准)枚举:
false/true
$router.addRoute:(NonNullable<AsamAnchorExpose["$router"]>)["addRoute"]— 依赖声明向已有路由添加子路由,或向路由器添加新的 RouteRecordRaw 路由记录。
事件参数完整签名见公开类型视图。
事件参数完整签名见公开类型视图。
$router.removeRoute:(NonNullable<AsamAnchorExpose["$router"]>)["removeRoute"]— 依赖声明按名称移除已有路由。
事件参数:
(name: Parameters<Extract<NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["removeRoute"]>, (...args: never[]) => unknown>>[0]): void$router.clearRoutes:() => void— 依赖声明从路由器中删除全部路由。
事件参数:
(): void$router.currentRoute:ShallowRef<AsamAnchorExpose["$route"]>— 依赖声明当前 RouteLocationNormalized。
嵌套展开边界:框架 / 平台类型;完整类型见公开类型视图。
$router.listening:boolean— 依赖声明允许关闭历史事件监听,这是用于微前端的底层 API。
枚举:
false/true$router.hasRoute:(NonNullable<AsamAnchorExpose["$router"]>)["hasRoute"]— 依赖声明检查指定名称的路由是否存在。
事件参数:
(name: Parameters<Extract<NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["hasRoute"]>, (...args: never[]) => unknown>>[0]): boolean$router.getRoutes:(NonNullable<AsamAnchorExpose["$router"]>)["getRoutes"]— 依赖声明获取全部 RouteRecord 路由记录的完整列表。
事件参数:
(): ReturnType<Extract<NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["getRoutes"]>, (...args: never[]) => unknown>>$router.resolve:(NonNullable<AsamAnchorExpose["$router"]>)["resolve"]— 依赖声明返回 RouteLocationRaw 的规范化位置,包含带基础路径的 href;默认使用 router.currentRoute 作为 currentLocation,仅在高级场景中覆盖。
事件参数完整签名见公开类型视图。
事件参数完整签名见公开类型视图。
$router.push:(NonNullable<AsamAnchorExpose["$router"]>)["push"]— 依赖声明通过向历史栈添加记录,以编程方式导航到新 URL。
事件参数:
(to: Parameters<Extract<NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["push"]>, (...args: never[]) => unknown>>[0]): ReturnType<Extract<NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["push"]>, (...args: never[]) => unknown>>$router.replace:(NonNullable<AsamAnchorExpose["$router"]>)["replace"]— 依赖声明通过替换历史栈中的当前记录,以编程方式导航到新 URL。
事件参数:
(to: Parameters<Extract<NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["replace"]>, (...args: never[]) => unknown>>[0]): ReturnType<Extract<NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["replace"]>, (...args: never[]) => unknown>>$router.back:() => void— 依赖声明通过 history.back() 在可用时后退,等价于 router.go(-1)。
事件参数:
(): void$router.forward:() => void— 依赖声明通过 history.forward() 在可用时前进,等价于 router.go(1)。
事件参数:
(): void$router.go:(delta: number) => void— 依赖声明通过调用 history.go() 在历史记录中前进或后退。
事件参数:
(delta: number): void$router.beforeEach:(NonNullable<AsamAnchorExpose["$router"]>)["beforeEach"]— 依赖声明添加每次导航之前执行的守卫,并返回移除此守卫的函数。
事件参数:
(guard: Parameters<Extract<NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["beforeEach"]>, (...args: never[]) => unknown>>[0]): () => void$router.beforeResolve:(NonNullable<AsamAnchorExpose["$router"]>)["beforeResolve"]— 依赖声明添加导航确认之前执行的守卫,此时组件已获取且其他导航守卫已通过;返回移除此守卫的函数。
事件参数:
(guard: Parameters<Extract<NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["beforeResolve"]>, (...args: never[]) => unknown>>[0]): () => void$router.afterEach:(NonNullable<AsamAnchorExpose["$router"]>)["afterEach"]— 依赖声明添加每次导航结束后执行的钩子,并返回移除此钩子的函数。
事件参数:
(guard: Parameters<Extract<NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["afterEach"]>, (...args: never[]) => unknown>>[0]): () => void$router.onError:(NonNullable<AsamAnchorExpose["$router"]>)["onError"]— 依赖声明添加导航期间未捕获错误的处理函数,涵盖同步和异步异常、守卫返回或传给 next 的错误,以及路由异步组件解析错误。
事件参数:
(handler: Parameters<Extract<NonNullable<(NonNullable<AsamAnchorExpose["$router"]>)["onError"]>, (...args: never[]) => unknown>>[0]): () => void$router.isReady:() => Promise<void>— 依赖声明返回在初次导航完成后兑现的 Promise,此时关联的异步进入钩子与异步组件均已解析;导航已完成时立即兑现。可用于保持服务端与客户端渲染一致;服务端需手动推入初始位置,客户端从 URL 自动读取。
事件参数:
(): Promise<void>$router.install:(app: App) => void— 依赖声明由 app.use(router) 自动调用,用户不应手动调用;客户端调用时会触发初次导航。
事件参数:
(app: App<any>): void
AsamAnchorInstance 公开类型视图
import type { ComponentPublicInstance, ComponentOptionsBase, ComponentProvideOptions, ComponentOptionsMixin, GlobalComponents, GlobalDirectives, WatchOptions, WatchStopHandle, ShallowRef, App } from 'vue';
import type { AsamAnchorInstance, AsamAnchorExpose, AsamTableColumnExpose, AsamAnchorProps, AsamAnchorSlots } from '@asam-ui/ui';
type PublicMember<T, K extends PropertyKey> = T extends unknown ? K extends keyof T ? T[K] : never : never;
// AsamAnchorInstance
type PublicContract = {
"$": AsamAnchorExpose["$"];
"$data": AsamTableColumnExpose;
"$props": AsamAnchorProps;
"$attrs": AsamAnchorExpose["$attrs"];
"$refs": AsamAnchorExpose["$refs"];
"$slots": AsamAnchorSlots;
"$root": ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string, {}, {}, {}, string, ComponentProvideOptions>, {}, {}, "", {}, any> | null;
"$parent": ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string, {}, {}, {}, string, ComponentProvideOptions>, {}, {}, "", {}, any> | null;
"$host": Element | null;
"$emit": ((event: "click", e: MouseEvent, href?: string | undefined) => void) & ((event: "change", href: string) => void);
"$el": any;
"$options": (AsamAnchorInstance)["$options"];
"$forceUpdate": () => void;
"$nextTick": (AsamAnchorInstance)["$nextTick"];
"$watch": (AsamAnchorInstance)["$watch"];
readonly "type": "default" | "underline";
readonly "direction": "horizontal" | "vertical";
readonly "offset": number;
readonly "marker": boolean;
readonly "duration": number;
readonly "bound": number;
readonly "onClick"?: ((e: MouseEvent, href?: string | undefined) => any) | undefined;
readonly "onChange"?: ((href: string) => any) | undefined;
readonly "container"?: string | Window | HTMLElement | null | undefined;
readonly "selectScrollTop"?: boolean | undefined;
"scrollTo": (href?: string) => void;
"$route": AsamAnchorExpose["$route"];
"$router": AsamAnchorExpose["$router"];
};
作用域插槽保留上游实例契约。
参数与事件说明
default
必填:否;声明来源:上游声明。
default 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(props: AsamTableColumnExpose): any
AsamAnchorSlots 公开类型视图
import type { AsamAnchorSlots, AsamAnchorExpose, AsamTableColumnExpose } from '@asam-ui/ui';
// AsamAnchorSlots
type PublicContract = {
"default"?: (AsamAnchorSlots)["default"];
readonly [key: string]: import("vue").Slot<any> | undefined;
};
参数与事件说明
change
必填:是;声明来源:上游声明。
change 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(href: string): boolean
click
必填:是;声明来源:上游声明。
click 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
事件参数:(e: MouseEvent, href?: string | undefined): boolean
AsamAnchorEmits 公开类型视图
import type { AsamAnchorEmits, AsamAnchorProps } from '@asam-ui/ui';
// AsamAnchorEmits
type PublicContract = {
"change": (href: string) => boolean;
"click": (e: MouseEvent, href?: string) => boolean;
};
参数与事件说明
offset
必填:否;声明来源:上游声明。
默认值与来源
未知 / 未声明固定上游源码默认表达式:0(2.14.7;源码事实,未作为 ASAM 运行实测)
type
必填:否;声明来源:上游声明。
type 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:"default" / "underline"
默认值与来源
未知 / 未声明固定上游源码默认表达式:'default'(2.14.7;源码事实,未作为 ASAM 运行实测)
direction
必填:否;声明来源:上游声明。
direction 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:"horizontal" / "vertical"
默认值与来源
未知 / 未声明固定上游源码默认表达式:'vertical'(2.14.7;源码事实,未作为 ASAM 运行实测)
container
必填:否;声明来源:上游声明。
container 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
嵌套展开边界:大型实例类型;完整类型见公开类型视图。
默认值与来源
未知 / 未声明固定上游源码未声明 default(2.14.7;源码事实,未作为 ASAM 运行实测)
bound
必填:否;声明来源:上游声明。
默认值与来源
未知 / 未声明固定上游源码默认表达式:15(2.14.7;源码事实,未作为 ASAM 运行实测)
duration
必填:否;声明来源:上游声明。
默认值与来源
未知 / 未声明固定上游源码默认表达式:300(2.14.7;源码事实,未作为 ASAM 运行实测)
marker
必填:否;声明来源:上游声明。
marker 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
默认值与来源
未知 / 未声明固定上游源码默认表达式:true(2.14.7;源码事实,未作为 ASAM 运行实测)
selectScrollTop
必填:否;声明来源:上游声明。
selectScrollTop 参数与事件数据
下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。
枚举:false / true
AsamAnchorPropsPublic 公开类型视图
import type { AsamAnchorPropsPublic, AsamAnchorProps } from '@asam-ui/ui';
// AsamAnchorPropsPublic
type PublicContract = {
"offset"?: number | undefined;
"type"?: (AsamAnchorPropsPublic)["type"];
"direction"?: (AsamAnchorPropsPublic)["direction"];
"container"?: (AsamAnchorPropsPublic)["container"];
"bound"?: number | undefined;
"duration"?: number | undefined;
"marker"?: (AsamAnchorPropsPublic)["marker"];
"selectScrollTop"?: boolean | undefined;
};