【问题标题】:Iterating over keys instead of values Vue app迭代键而不是值 Vue 应用程序
【发布时间】:2019-08-12 12:33:21
【问题描述】:

我正在尝试使用 axios 从我的 api 中选择三个键的值。 每次我提出请求时,我都会为每个键显示四次值。我从我的数据模型中删除了一个密钥并重新测试。当我这样做时,我的请求显示了 3 次而不是 4 次。这意味着我正在迭代键而不是值。

如何更改此代码以仅显示每个键的值?我正在使用 nuxt django 和 axios。

这是 axios 返回的 json 数据。 {"id":1,"balance":10.0,"exposure":7.0,"free_funds":80.0}

如何只获取每个段落标签的值 only 而不是每个段落标签的值 4 次?

  <template>
    <div class="container">
      <h2>Current Balance</h2>
      <ul class="trendings">
        <li v-for="result in results" :key="result">
          <p>{{ results.balance }} balance</p>
          <p>{{ results.free_funds }} free_funds</p>
          <p>{{ results.exposure }} exposure</p>
        </li>
      </ul>
    </div>
  </template>


  <script>
  import axios from "axios";
  export default {
    asyncData() {
      return axios.get("http://localhost:8000/api/balance/1").then(res => {
        return { results: res.data };
      });
    }
  };
  </script>

【问题讨论】:

  • @ChrisLi 我只想在我尝试 result.balance 的段落标签中显示余额、曝光和 free_funds 的值,但我没有返回任何值。只需按键 4 次

标签: javascript vue.js axios nuxt.js


【解决方案1】:

如果 JSON 响应看起来完全像这样:

{"id":1,"balance":10.0,"exposure":7.0,"free_funds":80.0}

那么你甚至不需要v-for,因为只有一件事需要迭代。

如果您想要v-for,请强制数据以数组形式返回,方法是将其包装成这样:

[ {"id":1,"balance":10.0,"exposure":7.0,"free_funds":80.0} ]

所以:

return { results: [res.data] };

【讨论】:

  • 感谢您的解释和解决方案。这解决了我的问题。非常感谢!
【解决方案2】:

docs

 <li v-for="(result, key) in results" :key="result">
      <p>{{ result }} {{ key }}</p>
 </li>

【讨论】:

  • 我也是这么想的,但不相关。问题是响应是一个对象,并且 OP 认为他们需要遍历一个裸对象。
猜你喜欢
  • 2011-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-06
  • 2017-12-07
相关资源
最近更新 更多