typescript - BootstrapVue 的带有延迟加载的 b-nav
问题描述
我无法解决以下问题:
我有一个 Vue.js 组件,其中需要带有路由的选项卡。我选择了一种b-nav 选项卡样式(官方文档)的变体,关于选项卡和路由,它工作正常。
问题:我不知道如何延迟加载每个选项卡的内容,item
而myItems
不是在请求选项卡路由之一时将它们全部加载。
路线如下所示:localhost/items/#tab0
等localhost/elements/#tab1
。
(顺便说一句:b-tabs 已内置延迟加载,但不可路由!不能使用它们 :-/)
这是我的组件模板的代码:
<template>
<div class="tabs">
<b-nav tabs>
<b-nav-item
v-for="(item, index) in myItems"
:key="item.Id"
:to="'#tab' + item.Id"
:active="$route.hash === '#tab' + item.Id || (index === 0 && $route.hash === '')"
>
{{ item.name }}
</b-nav-item>
</b-nav>
<div class="tab-content">
<div
v-for="(item, index) in myItems"
:key="item.Id"
class="tab-pane"
:class="{ active: $route.hash === '#tab' + item.Id || (index === 0 && $route.hash === '') }"
>
<!-- indidivual output here, depending on route | I want to lazy load this -->
</div>
</div>
</div>
</template>
这是我的 TypeScript 代码:
<script lang="ts">
import { Vue, Component, Prop } from "vue-property-decorator";
@Component()
export default class MyItemsTabs extends Vue {
@Prop() readonly myItems!: Item[] | null;
}
</script>
编辑:比如说 7 个标签,我只需要延迟加载 2 个,其他的立即加载。
有人有想法吗?提前致谢 :-)
解决方案
我是这样解决的:
我为标签内容创建了一个组件:
模板:
<div class="tab-content">
<TabContent
v-for="(item, index) in myItems"
class="tab-pane"
:class="{ active: $route.hash === '#tab' + item.Id || (index === 0 && $route.hash === '') }"
:key="item.Id"
:tab-content="item"
/>
</div>
在新TabContent
组件中,我检查:
模板:
<template>
<div>
<!-- no "pre-loading" -->
<TabContent1
:v-if="$route.hash === "#tab" + item.Id && item.name === 'tabName1'"
/>
<!-- no "pre-loading" -->
<TabContent2
:v-if="$route.hash === "#tab" + item.Id && item.name === 'tabName2'"
/>
<!-- loaded immediately -->
<TabContentDefault v-else />
</div>
</template>
当然,这是简化的代码。实际上,我使用函数进行检查并使用更多属性。
推荐阅读
- html - 当我保存和刷新时,Html 文件不会更新
- wix - 如果指定的服务正在运行,我如何使用 WiX Toolset 中止卸载?
- java - 从 byte[] 替换字符串而不转换
- python - PIL ImageFont.truetype 使用变量导致错误:OSError: cannot open resource
- ios - JSONObject 的 GraphQLResult 对模式文件中数据类型为 JSON 的对象具有 JSONString
- javascript - 使用 Cookie 捕获 UTM URL 参数
- kubernetes - Kubernetes Google OAuth2 登录
- selenium - 想了解 Selenium Webdriver 中的标签名称定位器
- microsoft-edge - Microsoft Edge 开发人员工具无法打开(空白屏幕)
- pip - “卸载 pip-19.0.1:”挂起