将参数从axios传递到方法vue

mqkwyuun  于 2022-11-05  发布在  iOS
关注(0)|答案(2)|浏览(161)

我是vue的新手,我正在尝试让它工作,我从XML中得到一些数据,一切都正常,但是我想用一个从Store中得到一个值的计算来改变我从XML中得到的值。
我的计算结果是:

currentStep: {
  set (val) {
      this.$store.commit('setCurrentStep', val)

  },
  get () {
      return this.$store.state.currentStep
  }
}

对于axios和xml2js,我使用以下方法获取所有数据:

getData() {
  axios.get("https://something.xml").then((response) => {
    this.parseXML(response.data).then((data) => {
      this.flightInformations = data

    })
  })
},
parseXML(data) {
  return new Promise((resolve) => {
    let parser = new xml2js.Parser({
      trim: true,
      explicitArray: true,
    });
    parser.parseString(data, function (err, result) {

     let obj = null
     obj = result.flugplan.abflug[0].flug;

      let flight_dates = {};

      for (let item of obj) {
        let flight_date = item.datum.join().toString();

        if (!flight_dates[flight_date]) {
          flight_dates[flight_date] = [];
        }

        flight_dates[flight_date].push({
          flightNr: item.flugnr.join().toString(),
          flightPlace: item.ort.join().toString(),
          flightPlan: item.plan.join().toString(),
          flightExpected: item.erwartet.join().toString(),
          flightDate: item.datum.join().toString(),
        })
      }
      resolve(flight_dates);
    })
  })
}

我需要改变我的OBJ使用我的计算如下:

let obj = null

     if (this.currentStep === 'departures') {
      obj = result.flugplan.abflug[0].flug;
     } else {
      obj = result.flugplan.ankunft[0].flug;
     }

但这不管用你们能帮帮忙吗
非常感谢您的光临。

1rhkuytd

1rhkuytd1#

Computed只能返回一些值而不能修改任何内容。请尝试以下方法:

computed: {
  someData() {
    return this.currentStep === 'departures' ? result.flugplan.abflug[0].flug : result.flugplan.ankunft[0].flug;
  }
}

然后使用someData值:

const obj = this.someData
eagi6jfj

eagi6jfj2#

我终于得到了它,现在工作!这里是代码,如果有人有同样的问题

getData() {
  axios.get("something.xml").then((response) => {
    this.parseXML(response.data).then((data) => {
      this.flightInformations = data
    })
    .catch(err => {
      console.log(`${err} data is not avaiable`)
    })
  })
},
parseXML(data) {
  return new Promise((resolve) => {
    let parser = new xml2js.Parser({
      trim: true,
      explicitArray: true,
    });
    parser.parseString(data, (err, result) => {
     let obj = null
     if (this.$store.state.currentStep === 'abflug') {
      obj = result.flugplan.abflug[0].flug
     } else {
      obj = result.flugplan.ankunft[0].flug
     }
      let flight_dates = {};
      for (let item of obj) {
        let flight_date = item.datum.join().toString();
        if (!flight_dates[flight_date]) {
          flight_dates[flight_date] = [];
        }
        flight_dates[flight_date].push({
          flightNr: item.flugnr.join().toString(),
          flightPlace: item.ort.join().toString(),
          flightPlan: item.plan.join().toString(),
          flightExpected: item.erwartet.join().toString(),
          flightDate: item.datum.join().toString()
        })
      } 
      resolve(flight_dates)
    })
  })
}

现在使用Store,当我更改CurrentStep时,它也会更改读取XML的哪一部分。

相关问题