vue elementui el-tabs切换tab重新加载

 
2个tabs建议使用:
<template>
    <div>
        <el-tabs v-model="activeName" @tab-click="handleClick">
            <el-tab-pane label="审核提醒" name="first" lazy key="'first'">
                <ReviewRemind v-if="isFirst" />
            </el-tab-pane>
            <el-tab-pane lazy label="统计分析" name="second" key="'second'">
                <StatisticalAnalysis v-if="isSecond" />
            </el-tab-pane>
        </el-tabs>
    </div>
</template>

<script>
import ReviewRemind from './ReviewRemind.vue'
import StatisticalAnalysis from './StatisticalAnalysis.vue'
export default {
    data() {
        return {
            activeName: 'first',
            isFirst: true,
            isSecond: false

        }
    },
    components: {
        ReviewRemind,
        StatisticalAnalysis,
    },
    methods: {
        handleClick(tab) {
            if (tab.name === 'first') {
                this.isFirst = true
                this.isSecond = false
            } else if (tab.name === 'second') {
                this.isFirst = false
                this.isSecond = true
            }
        }
    }
}
</script>
 
 
 
2个以上tabs建议使用:
<template>
  <div>
    <el-tabs v-model="activeName" @tab-click="handleClick">
      <el-tab-pane label="动态更新" name="one">
        <p v-if="tabRefresh.one">动态更新</p>
      </el-tab-pane>
      <el-tab-pane lazy label="超量预警" name="two">
        <ExcessWarning v-if="tabRefresh.two" />
      </el-tab-pane>
      <el-tab-pane label="问题线索" name="three">
        <ProblemClue v-if="tabRefresh.three" />
      </el-tab-pane>
      <el-tab-pane label="数据对比" name="four">
        <p v-if="tabRefresh.four">数据对比</p>
      </el-tab-pane>
      <el-tab-pane lazy label="站点匹配" name="five">
        <SiteMatch v-if="tabRefresh.five" />
      </el-tab-pane>
    </el-tabs>
  </div>
</template>

<script>
import ExcessWarning from "./ExcessWarning.vue";
import SiteMatch from "./SiteMatch.vue";
import ProblemClue from "./ProblemClue.vue";
export default {
  data() {
    return {
      activeName: "one",
      tabRefresh: {
        one: true,
        two: false,
        three: false,
        four: false,
        five: false,
      },
    };
  },
  components: {
    ExcessWarning,
    SiteMatch,
    ProblemClue,
  },
  methods: {
    handleClick() {
      switch (this.activeName) {
        case "one":
          this.switchTab("one");
          break;
        case "two":
          this.switchTab("two");
          break;
        case "three":
          this.switchTab("three");
          break;
        case "four":
          this.switchTab("four");
          break;
        case "five":
          this.switchTab("five");
          break;
        default:
          alert("默认,选择出错");
          console.log("wrong choice");
      }
    },
    switchTab(tab) {
      for (let [key, value] of Object.entries(this.tabRefresh)) {
        if (key == tab) {
          this.tabRefresh[key] = true;
        } else {
          this.tabRefresh[key] = false;
        }
      }
    },
  },
};
</script>

补充:

其中Object.entries( ) 该方法返回一个数组,成员时参数对象自身的(不含继承的)所有可遍历属性的键值对数组 

const obj = { foo: 'bar', baz: 'abc' };

console.log(Object.entries(obj)); // [['foo', 'bar'], ['baz', 'abc']]

posted @ 2022-05-05 14:52  赵辉Coder  阅读(3682)  评论(1编辑  收藏  举报