# API 参考
::: tip
在 Vue 实例内部,你可以通过 `$routerTab` 访问路由页签实例。因此你可以调用 `vm.$routerTab.close()`。
:::
## RouterTab Props
### `alive-key`
页面组件缓存的键
- 类型: `string | Function`
- 如果类型为 `string` ,则取 `$route[aliveKey]` 的值
- 如果类型为 `Function` ,则取 `aliveKey($route)` 返回的字符串。该函数不应返回随机变化的字符串,以免页签无法与缓存的页面对应
- 默认值: `'path'`
根据 `$route.path` 来缓存页面组件。
- 同一路由-不同 `$route.params` 的页面,各自打开独立的页签,单独缓存
- 同一路由-相同 `$route.params` -不同 `$route.query` 的页面,共用同一个页签,后打开的页面将会替换之前页签内的页面,并且旧的页面缓存也被清除
- 仅仅 `$route.hash` 不同的页面,共用同一页签和缓存
- 示例:
``` html
```
### `i18n`
语言配置
- 类型: `string | Object`
- 如果类型为 `string` ,可以设置为内置的语言 `'zh-CN'` (默认) 和 `'en'`
- 如果类型为 `Object` ,可设置自定义的语言
- 默认值: `'zh-CN'`
- 示例:
- **指定内置语言**
``` html
```
- **自定义语言**
``` html
```
``` javascript
export default {
data () {
return {
lang: {
tab: {
untitled: 'Untitled Page'
},
contextmenu: {
refresh: 'Refresh This',
refreshAll: 'Refresh All',
close: 'Close This',
closeLefts: 'Close to the Left',
closeRights: 'Close to the Right',
closeOthers: 'Close Others'
},
msg: {
keepOneTab: 'Keep at least 1 tab'
}
}
}
}
}
```
### `tabs`
**初始页签数据**,进入页面时默认显示的页签。相同 `aliveKey` 的页签只保留第一个
- 类型: `Array `
- tabs子元素类型为 `string` 时,应配置为要打开页面的 `fullPath` ,页签的标题/图片/提示等信息会从对应页面的 `router` 配置中获取
- tabs子元素类型为 `Object` 时:
- to: 页签路由地址,跟 `router.push` 的 `location` 参数一致,可以为 `fullPath`,也可以为 `location` 对象 - [参考文档](https://router.vuejs.org/zh/guide/essentials/navigation.html#router-push-location-oncomplete-onabort)
- title: 页签标题,如果页面有设置 `routerTab.title` 动态标题,可在此设置最终的动态标题值,以免与默认从 `router` 获取的标题不一致
- closable: 页签是否允许关闭,默认为 `true`
- 默认值: `[]`
- 示例:
``` html
```
### `router-view`
**Vue Router Tab 内置 `` 组件的配置**
- 类型: `Object`
配置参考: [Vue Router - \ Props](https://router.vuejs.org/zh/api/#router-view-props)
- 默认值: `{}`
### `tab-transition`
**页签过渡效果**,新增和关闭页签时的过渡
- 类型: `string | Object`
- 类型为 `string` 时,应配置为 `transition.name`
- 类型为 `Object` 时,配置参考: [Vue - transition](https://cn.vuejs.org/v2/api/#transition)
- 默认值: `'router-tab-zoom-lb'`
- 示例:
``` html
```
### `page-transition`
**页面过渡效果**
- 类型: `string | Object`
同 [`tab-transition`](#tab-transition)
- 默认值: `{
name: 'router-tab-swap',
mode: 'out-in'
}`
## RouterTab 插槽
### 页签项
- **示例:**
``` html
{{index}}
{{title || '未命名页签'}}
```
## RouterTab 实例属性
### `routerTab.activedTab`
当前激活的页签id
## RouterTab 实例方法
### `routerTab.close`
- **参数**:
- `{string | Object} [location]` 路由地址 - [参考文档](https://router.vuejs.org/zh/guide/essentials/navigation.html#router-push-location-oncomplete-onabort)
- `{Boolean} [fullMatch = true]` 是否全匹配(匹配fullPath去除hash部分)
- **说明**:
关闭指定 `location` 的页签
- **示例**:
``` js
// 如果未提供 `location`,则默认关闭当前激活的页签
vm.$routerTab.close()
// 关闭指定 fullPath 的页签
vm.$routerTab.close('/page/1')
// 关闭指定 location 的页签
vm.$routerTab.close({
name: 'page',
params: {
id: 2
}
})
// 关闭与给定地址相同 aliveKey 的页签,即使地址不完全匹配
vm.$routerTab.close('/page/1', false)
```
### `routerTab.refresh`
- **参数**:
- `{string | Object} [location]` 路由地址 - [参考文档](https://router.vuejs.org/zh/guide/essentials/navigation.html#router-push-location-oncomplete-onabort)
- `{Boolean} [fullMatch = true]` 是否全匹配(匹配fullPath去除hash部分)
- **说明**:
刷新指定 `location` 的页签
- **示例**:
``` js
// 如果未提供 `location`,则默认刷新当前激活的页签
vm.$routerTab.refresh()
// 刷新指定 fullPath 的页签
vm.$routerTab.refresh('/page/1')
// 刷新指定 location 的页签
vm.$routerTab.refresh({
name: 'page',
params: {
id: 2
}
})
// 刷新与给定地址相同 aliveKey 的页签,即使地址不完全匹配
vm.$routerTab.refresh('/page/1', false)
```
### `routerTab.refreshAll`
- **参数**:
- `{Boolean} [force = false]` 如果 `force` 为 `true`,则忽略页面组件的 `beforePageLeave` 配置,强制刷新所有页签
- **说明**:
刷新所有页签
- **示例**:
``` js
// 刷新所有页签
vm.routerTab.refreshAll()
// 强制刷新所有页签
vm.routerTab.refreshAll(true)
```
## Route.meta 路由元
### `meta.title`
- 类型: `string`
- 默认值: `'新页签'`
页签标题
### `meta.icon`
- 类型: `string`
页签图标
### `meta.tips`
- 类型: `string`
- 默认值: 默认和页签标题 `meta.title` 保持一致
页签提示
### `meta.aliveKey`
页面组件缓存的键,用以设置路由独立的页签缓存规则。
配置参考: [RouterTab Props > alive-key](#alive-key)