11

在我的 Vue 应用程序中,我使用 Axios 获得了一个 XML 文件,并用于parseString将 XML 解析为 JSON。然后我需要将数据传递result给 Vue 数据 ( this.events)。我console.log将解析的 XML 显示为 JSON,但我无法在此函数内推送到 Vue 数据。

var parseString = require('xml2js').parseString;

axios.get(`http://url.to/events.xml`)
  .then(response => {
    parseString(response.data, function (err, result) {
      console.log(result); // returns a json array
      this.events = result // nothing happens
    });        
  })
}

如何将我的 JSON 数组存储到this.dataVue 中?

4

2 回答 2

7

这个答案是正确的。但是,我会在任何地方都使用箭头函数,所以this它始终是 VUE 类组件。另外,我会检查解析错误。

axios.get('http://url.to/events.xml')
  .then(response => {
    parseString(response.data, (err, result) => {
      if(err) {
       //Do something
      } else {
       this.events = result
     }
    });        
  })
}
于 2019-01-15T11:13:09.397 回答
6

尽量不要使用thisinside parseString,可能是范围问题,这意味着this没有引用 vue 数据对象。

尝试这个:

axios.get('http://url.to/events.xml')
  .then(response => {
    var self = this; 
    parseString(response.data, function (err, result) {
      self.events = result
    });        
  })
}
于 2018-02-14T13:21:42.903 回答