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日

悬赏问题

  • ¥15 像这种代码要怎么跑起来?
  • ¥15 怎么改成循环输入删除(语言-c语言)
  • ¥15 安卓C读取/dev/fastpipe屏幕像素数据
  • ¥15 pyqt5tools安装失败
  • ¥15 mmdetection
  • ¥15 nginx代理报502的错误
  • ¥100 当AWR1843发送完设置的固定帧后,如何使其再发送第一次的帧
  • ¥15 图示五个参数的模型校正是用什么方法做出来的。如何建立其他模型
  • ¥100 描述一下元器件的基本功能,pcba板的基本原理
  • ¥15 STM32无法向设备写入固件