You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue.js如何将子组件输入数据添加到父组件playersData数组?

解决方案:子组件数据传递并添加到父组件数组

你的代码存在几个关键问题导致数据无法正常传递和添加,下面是具体修复方案:

子组件(MyPopUp)修改

1. 添加响应式数据

在组件的data选项中声明表单绑定变量,用于存储用户输入的姓名、年龄和性别:

export default {
  name: "MyPopUp",
  components: {MyButton, InputText},
  data() {
    return {
      userName: '',
      userAge: '',
      selectedSex: '' // 存储选中的性别
    }
  },
  methods: {
    // ... 原有方法
  }
}

2. 绑定性别单选框

给两个radio按钮添加v-model绑定到selectedSex,确保能获取用户选中的性别值:

<div class="sex">
  <div class="text">Пол</div>
  <label>
    <input class="inpSex" type='radio' value="Женский" name='sex' v-model="selectedSex">
    <span class='woman'><img alt="Ж" class="picSex" src="@/components/UI/pics/FemaleSex.svg"></span>
  </label>
  <label>
    <input class="inpSex" type='radio' value="Мужской" name='sex' v-model="selectedSex">
    <span class='man'><img alt="М" class="picSex" src="@/components/UI/pics/MaleSex.svg"></span>
  </label>
</div>

3. 完善addNewPlayer方法

触发$emit时传递完整用户数据,同时重置表单并关闭弹窗:

addNewPlayer() {
  // 简单校验必填字段
  if (!this.userName || !this.userAge || !this.selectedSex) {
    alert('请填写所有字段');
    return;
  }
  // 打包数据传递给父组件
  this.$emit('addNewPlayer', {
    name: this.userName,
    age: this.userAge,
    sex: this.selectedSex
  });
  // 重置表单
  this.userName = '';
  this.userAge = '';
  this.selectedSex = '';
  // 关闭弹窗
  this.closePopup();
}

父组件(SessionsPage)修改

实现addNewPlayerInConsole方法

接收子组件传递的数据,生成符合playersData结构的对象并添加到数组:

addNewPlayerInConsole(playerData) {
  // 生成唯一ID
  const newId = (this.playersData.length + 1).toString();
  // 格式化当前日期为示例样式
  const currentDate = new Date().toLocaleDateString('ru-RU', {
    day: '2-digit',
    month: 'long',
    year: 'numeric'
  });
  // 创建新玩家对象
  const newPlayer = {
    ID: newId,
    PlayerName: playerData.name,
    Age: playerData.age,
    Sex: playerData.sex,
    Status: 'Активен',
    DateOfCreate: currentDate,
    DateOfEdit: currentDate
  };
  // 添加到数组
  this.playersData.push(newPlayer);
}

修改完成后,点击弹窗的"Добавить"按钮,用户输入的数据就会传递到父组件并自动添加到玩家列表中。

内容的提问来源于stack exchange,提问作者klimmm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 19:50:23