| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- <template>
- <div class="tab-container">
- <el-tag>mounted times :{{ createdTimes }}</el-tag>
- <el-alert :closable="false" style="width:200px;display:inline-block;vertical-align: middle;margin-left:30px;" title="Tab with keep-alive" type="success" />
- <el-tabs v-model="activeName" style="margin-top:15px;" type="border-card">
- <el-tab-pane v-for="item in tabMapOptions" :key="item.key" :label="item.label" :name="item.key">
- <keep-alive>
- <tab-pane v-if="activeName==item.key" :type="item.key" @create="showCreatedTimes" />
- </keep-alive>
- </el-tab-pane>
- </el-tabs>
- </div>
- </template>
- <script>
- import TabPane from './components/TabPane'
- export default {
- name: 'Tab',
- components: { TabPane },
- data() {
- return {
- tabMapOptions: [
- { label: 'China', key: 'CN' },
- { label: 'USA', key: 'US' },
- { label: 'Japan', key: 'JP' },
- { label: 'Eurozone', key: 'EU' }
- ],
- activeName: 'CN',
- createdTimes: 0
- }
- },
- watch: {
- activeName(val) {
- this.$router.push(`${this.$route.path}?tab=${val}`)
- }
- },
- created() {
- // init the default selected tab
- const tab = this.$route.query.tab
- if (tab) {
- this.activeName = tab
- }
- },
- methods: {
- showCreatedTimes() {
- this.createdTimes = this.createdTimes + 1
- }
- }
- }
- </script>
- <style scoped>
- .tab-container {
- margin: 30px;
- }
- </style>
|