marlsun 2022-07-06 17:40 采纳率: 84.2%
浏览 50
已结题

追问:select的change事件内容如何暴露到外部

<template>
  <div>
    <el-row :gutter="20" class="header">
      <el-col :span="6">
        <el-select
          v-model="select"
          clearable
          placeholder="Select"
          @change="selectChange(select)"
        >
          <el-option value="Option1" label="Option1" />
          <el-option value="Option2" label="Option2" />
        </el-select>
      </el-col>
      <el-button type="primary" @click="initTable">生成表格</el-button>
    </el-row>
    <!-- 表格部分 -->
    <el-table
      :data="selectChange(select)"
      v-if="select"
      style="width: 100%"
      id="phon-table"
    >
      <el-table-column
        align="center"
        v-for="(item, index) in options"
        :key="index"
        :prop="item.prop"
        :label="item.label"
      >
      </el-table-column>
    </el-table>
  </div>
</template>
<script setup>
import { ref, onMounted } from "vue";
const options = ref([
  { label: "title", prop: "title" },
  { label: "shanghai", prop: "shanghai" },
  { label: "beijing", prop: "beijing" },
  { label: "guangzhou", prop: "guangzhou" },
  { label: "shenzhen", prop: "shenzhen" },
  { label: "nanjing", prop: "nanjing" },
]);
//数据
const data1 = ref([
  {
    title: "足球人数",
    shanghai: 100,
    beijing: 200,
    guangzhou: 300,
    shenzhen: 400,
    nanjing: 500,
  },
]);
const data2 = ref([
  {
    title: "篮球人数",
    shanghai: 1000,
    beijing: 2000,
    guangzhou: 3000,
    shenzhen: 4000,
    nanjing: 5000,
  },
]);
const select = ref(null);
let dataArr = [];
const selectChange = (select) => {
  // console.log(select);
  if (select === "Option1") {
    dataArr = data1.value;
    console.log(dataArr);
  } else if (select === "Option2") {
    dataArr = data2.value;
    console.log(dataArr);
  }
  return dataArr;
};

onMounted(() => {
  //不能调用,得不到dataArr,报错dataArr未定义
  console.log(selectChange(select));
  console.log(dataArr)
});

//因为后续需要对dataArr进行自定义修改,放在onMounted钩子中也不起作用,产生了新的问题:如何在selectChange函数外部调用到dataArr? 求指教,谢谢!



</script>
<style></style>


  • 写回答

3条回答 默认 最新

  • Heerey525 前端领域新星创作者 2022-07-06 23:34
    关注

    修改注意点我加了注释-----------------------------------

    <template>
      <div>
        <el-row :gutter="20" class="header">
          <el-col :span="6">
            <el-select
              v-model="select"
              clearable
              placeholder="Select"
              @change="selectChange(select)"
            >
              <el-option value="Option1" label="Option1" />
              <el-option value="Option2" label="Option2" />
            </el-select>
          </el-col>
          <el-button type="primary" @click="initTable">生成表格</el-button>
        </el-row>
        <!-- 表格部分 -->
        <el-table :data="dataArr" v-if="select" style="width: 100%" id="phon-table">
          <el-table-column
            align="center"
            v-for="(item, index) in options"
            :key="index"
            :prop="item.prop"
            :label="item.label"
          >
          </el-table-column>
        </el-table>
      </div>
    </template>
    <script setup>
    import { ref, onMounted } from "vue";
    const options = ref([
      { label: "title", prop: "title" },
      { label: "shanghai", prop: "shanghai" },
      { label: "beijing", prop: "beijing" },
      { label: "guangzhou", prop: "guangzhou" },
      { label: "shenzhen", prop: "shenzhen" },
      { label: "nanjing", prop: "nanjing" },
    ]);
    //数据
    const data1 = ref([
      {
        title: "足球人数",
        shanghai: 100,
        beijing: 200,
        guangzhou: 300,
        shenzhen: 400,
        nanjing: 500,
      },
    ]);
    const data2 = ref([
      {
        title: "篮球人数",
        shanghai: 1000,
        beijing: 2000,
        guangzhou: 3000,
        shenzhen: 4000,
        nanjing: 5000,
      },
    ]);
    const select = ref(null);
    let dataArr = ref([]); // 使用ref包裹---------------------------------------
    const selectChange = (select) => {
      // console.log(select);
      if (select === "Option1") {
        dataArr = data1.value;
        console.log(dataArr);
      } else if (select === "Option2") {
        dataArr = data2.value;
        console.log(dataArr);
      }
      //   return dataArr; 去除-------------------------------
    };
    
    onMounted(() => {
      select.value = "Option1"; // 设置select初始值,默认选中Option1------------------------------------------
    
      selectChange(select) // 上方table组件绑定值变为dataArr--------------------------------
      console.log(dataArr);
    });
    
    //因为后续需要对dataArr进行自定义修改,放在onMounted钩子中也不起作用,产生了新的问题:如何在selectChange函数外部调用到dataArr? 求指教,谢谢!
    </script>
    <style></style>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 7月15日
  • 已采纳回答 7月7日
  • 创建了问题 7月6日

悬赏问题

  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP