首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从axios中检索数据并将其填充到Vue.js中的编辑表单(选择选项)中?

如何从axios中检索数据并将其填充到Vue.js中的编辑表单(选择选项)中?
EN

Stack Overflow用户
提问于 2020-11-29 21:05:37
回答 1查看 670关注 0票数 0

我有一个表单,它使编辑用户成为可能。因此,用户对象的数据(通过id)由axios检索并显示在输入字段中。输入字段和日期选择器没有问题-因此信息会显示出来。但是数据不会显示在选择字段中。我想要显示之前选择的选项(我得到了另一个表单,您可以在其中创建用户。用户的ID通过props传递。),但我得到如下错误:

代码语言:javascript
运行
复制
[Vue warn]: Property or method "bundeslaender" is not defined on the instance but referenced during render. Make sure that this property is reactive, either in the data option, or for class-based components, by initializing the property.

我在vorgesetzten上也遇到了同样的错误。此外,还应该可以更改所选的选项。

Vue组件的实现方式如下:

代码语言:javascript
运行
复制
<template>
  <div>
    <b-container>
      <h2>Benutzer bearbeiten</h2>
      <b-form @reset="onReset" @submit.prevent="saveBenutzer" id="form">
        <b-form-group
          id="input-group-2"
          label="Benutzername:"
          label-for="input-2"
        >
          <b-form-input
            type="text"
            id="input-2"
            v-model="Benutzer.Benutzername"
            required
          ></b-form-input>
        </b-form-group>

        <b-form-group id="input-group-3" label="Passwort:" label-for="input-3">
          <b-form-input
            type="password"
            id="input-3"
            v-model="Benutzer.Passwort"
            required
          ></b-form-input>
        </b-form-group>

        <b-form-group id="input-group-4" label="Vorname:" label-for="input-4">
          <b-form-input
            type="text"
            id="input-4"
            v-model="Benutzer.Vorname"
            required
          ></b-form-input>
        </b-form-group>

        <b-form-group id="input-group-5" label="Nachname:" label-for="input-5">
          <b-form-input
            type="text"
            id="input-5"
            v-model="Benutzer.Nachname"
            required
          ></b-form-input>
        </b-form-group>

        <b-form-group
          id="input-group-6"
          label="Geburtsdatum:"
          label-for="input-6"
        >
          <b-form-datepicker
            id="input-6"
            v-model="Benutzer.Geburtsdatum"
            placeholder="Geburtsdatum auswählen"
            required
          ></b-form-datepicker>
        </b-form-group>

        <b-form-group id="input-group-7" label="Email:" label-for="input-7">
          <b-form-input
            type="email"
            id="input-7"
            v-model="Benutzer.Email"
            required
          ></b-form-input>
        </b-form-group>

        <b-form-group
          id="input-group-8"
          label="Betriebszugehörigkeit seit:"
          label-for="input-8"
        >
          <b-form-datepicker
            id="input-8"
            v-model="Benutzer.Eintrittsdatum"
            placeholder="Datum auswählen"
            required
          ></b-form-datepicker>
        </b-form-group>

        <b-form-group
          id="input-group-9"
          label="Bundesland:"
          label-for="input-9"
        >
          <b-form-select id="input-9" v-model="Benutzer.bundesland" required>
            <b-form-select-option
              v-for="bundesland in bundeslaender"
              :key="bundesland.BundeslandID"
              v-bind:value="bundesland"
            >
              {{ bundesland.Name }}
            </b-form-select-option>
          </b-form-select>
        </b-form-group>

        <b-form-group label="Zusätzliche Rolle:">
        <b-form-checkbox id="input-10" v-model="Benutzer.istVorgesetzter"
          >Vorgesetzter</b-form-checkbox
        >
        <b-form-checkbox id="input-11" v-model="Benutzer.istAdmin"
          >Admin</b-form-checkbox
        >
        </b-form-group>

        <b-form-group
          id="input-group-11"
          label="Vorgesetzter:"
          label-for="input-11"
        >
          <b-form-select id="input-11" v-model="Benutzer.Vorgesetzter" required>
            <b-form-select-option
              v-for="vorgesetzter in vorgesetzten"
              :key="vorgesetzter.BenutzerID"
              v-bind:value="vorgesetzter"
            >
              {{ vorgesetzter.Vorname + " " + vorgesetzter.Nachname }}
            </b-form-select-option>
          </b-form-select>
        </b-form-group>

        <b-button type="submit" variant="primary">Speichern</b-button>
        <b-button type="reset" variant="secondary">Abbrechen</b-button>
      </b-form>
    </b-container>
  </div>
</template>

<script>
import axios from "axios";
import { server } from "../helper.js";
export default {
  name: "editBenutzer",
  data() {
    return {
      BenutzerID: null,  
      Benutzer: {
        Benutzername: "",
        Passwort: "",
        Vorname: "",
        Nachname: "",
        Geburtsdatum: "",
        Email: "",
        Eintrittsdatum: "",
        bundesland: "",
        istAdmin: false,
        istVorgesetzter: false,
        Vorgesetzter: ""
      }
    };
  },
  created() {
    this.BenutzerID = this.$route.params.id;
    this.getBenutzer();
    /*this.getBundeslaender();
    this.getVorgesetzten();*/
  },
  methods: {
    onReset(evt) {
      evt.preventDefault();
        this.Benutzer.Benutzername = "";
        this.Benutzer.Passwort = "";
        this.Benutzer.Vorname = "";
        this.Benutzer.Nachname = "";
        this.Benutzer.Geburtsdatum = "";
        this.Benutzer.Email = "";
        this.Benutzer.Eintrittsdatum = "";
        this.Benutzer.bundesland = "";
        this.Benutzer.istAdmin = false;
        this.Benutzer.istVorgesetzter = false;
        this.Benutzer.Vorgesetzter = "";
      this.$router.push({ name: "benutzerverwaltung" });
    },
    getBenutzer(){
        axios.get(server.baseURL + '/benutzer/' + this.BenutzerID).then(response => 
        { this.Benutzer = response.data });
    },
    saveBenutzer() {
      let benutzerdaten = {
        Benutzername: this.Benutzer.Benutzername,
        Passwort: this.Benutzer.Passwort,
        Vorname: this.Benutzer.Vorname,
        Nachname: this.Benutzer.Nachname,
        Geburtsdatum: this.Benutzer.Geburtsdatum,
        Email: this.Benutzer.Email,
        Eintrittsdatum: this.Benutzer.Eintrittsdatum,
        bundesland: this.Benutzer.bundesland.BundeslandID,
        istAdmin: this.Benutzer.istAdmin,
        istVorgesetzter: this.Benutzer.istVorgesetzter,
        Vorgesetzter:
          this.Benutzer.Vorgesetzter.Vorname + " " + this.Benutzer.Vorgesetzter.Nachname,
      };
      this.updateBenutzer(benutzerdaten);
    },
    /*updateBenutzer(data) {
      axios.put(server.baseURL/customer/update?customerID=${this.id}`,
          customerData
        )
        .then(data => {
          router.push({ name: "home" });
        });
    },*/
    getBundeslaender() {
      axios
        .get(server.baseURL + "/bundesland")
        .then((response) => { this.bundeslaender = response.data });
    },
    getVorgesetzten() {
      axios
        .get(server.baseURL + "/benutzer/vorgesetzter?istVorgesetzter=true")
        .then((response) => { this.vorgesetzten = response.data });
    },
  },
};
</script>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-29 21:13:03

您没有在数据节中定义bundeslaendervorgesetzten

应该是这样的:

代码语言:javascript
运行
复制
data() {
    return {
      BenutzerID: null,  
      bundeslaender: [],
      vorgesetzten: [],
      Benutzer: {
        Benutzername: "",
        Passwort: "",
        Vorname: "",
        Nachname: "",
        Geburtsdatum: "",
        Email: "",
        Eintrittsdatum: "",
        bundesland: "",
        istAdmin: false,
        istVorgesetzter: false,
        Vorgesetzter: ""
      }
    };
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65060397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档