【问题标题】:VueJS api call leaving data undefinedVueJS api调用未定义数据
【发布时间】:2017-01-21 23:30:47
【问题描述】:

我正在学习 VueJS 2.0,我正在连接一个 API,我希望在该 API 中一些数据的值随着输入的变化而变化。以下是使用开发工具输出的内容:

canadianDollar:undefined europeanEuro:undefined europeanPound:undefined usd:"1232"

每当我在 USD 输入字段中输入 1232 时,它都不会返回任何内容,并将这些属性保留为未定义。这是代码。

new Vue({
  el: '#app',
  data: {
    usd: '',
    canadianDollar: '',
    europeanPound: '',
    europeanEuro: ''
  },

  // Watch methods
  watch: {
      usd: function() {
          this.convertCurrency()
      }
  },

  // Logic Methods
  methods: {
    convertCurrency: _.debounce(function() {
        var app = this;
        if (app.usd.length !== 0) {

            // Show that the things are loading in.
            app.canadianDollar = 'Searching...'
            app.europeanPound = 'Searching...'
            app.europeanEuro = 'Searching...'
            console.log(app.usd)
            axios.get("http://api.fixer.io/latest?base=USD&" + app.usd)
                .then(function(response) {
                    app.canadianDollar = response.data.CAD
                    app.europeanPound = response.data.GBP
                    app.europeanEuro = response.data.EUR
                })
                .catch(function(error){
                    app.canadianDollar = "ERROR"
                    app.europeanPound = "ERROR"
                    app.europeanEuro = "ERROR"
                })
        }
    }, 500)
  }
})

和 HTML:

<!DOCTYPE html>
<html>
<head>
  <title>Welcome to Vue</title>
  <script src="https://unpkg.com/vue/dist/vue.js"></script>
</head>
<body>
  <div id="app">
    <input type="text" name="" value="" v-model="usd">
    <ul>
        <li>Canadian Dollar: {{canadianDollar}}</li>
        <li>European Pound: {{europeanPound}}</li>
        <li>European Euro: {{europeanEuro}}</li>
    </ul>
  </div>
  <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
  <script src="https://cdn.jsdelivr.net/lodash/4.17.4/lodash.min.js" charset="utf-8"></script>
  <script src="index.js" charset="utf-8"></script>
</body>
</html>

当我输入一个数字时,它确实给了我“搜索”部分,但它消失了,什么也没有显示。

【问题讨论】:

    标签: javascript vue.js vuejs2


    【解决方案1】:

    我会建议改变

    then(function(response) {
       app.canadianDollar = response.data.CAD
       app.europeanPound = response.data.GBP
       app.europeanEuro = response.data.EUR
    })
    

    then(function(response) {
       console.log(response);
    })
    

    那是您可以看到返回的内容。

    另外,axios.get("http://api.fixer.io/latest?base=USD&amp;" + app.usd) 应该有一个类似 vulue:axios.get("http://api.fixer.io/latest?base=USD&amp;VALUE=" + app.usd) 的名称,但您必须检查他们的 api 以了解其名称。

    【讨论】:

      【解决方案2】:

      ...

      response.data.rates.CAD;
      

      你有

      response.data.CAD;
      

      ...

      app.canadianDollar = response.data.rates.CAD * app.usd;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-02-04
        • 2021-09-30
        • 2021-08-04
        • 2019-03-09
        • 2021-04-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多