【问题标题】:Render data from an API into a Vue Template将 API 中的数据渲染到 Vue 模板中
【发布时间】:2021-01-04 13:24:45
【问题描述】:

我在 vue 中成功获取了 api,但是如何正确渲染呢? “undefined id of null”是我在控制台错误中得到的

这是我打的 axios 调用

  axios.getOrder(id).then(response => {
    this.cart_content = response.data
    console.log(this.cart_content)
  })

这就是我尝试在 vue 中渲染的方式

       <div v-if="cart_content">
          <ul v-for="i in cart_content" :key="i.id">
            <li>
              <p>{{i.name}}</p>
              <p>{{i.items.quantity}}</p>
              <p>{{i.items.unit_price}}</p>
            </li>
          </ul>
        </div>

当我 console.log 时 API 可用,它看起来像这样。

id:'',
data:array[1]

“数据数组”是我需要的详细信息,谁能告诉我如何获取这些数据。

【问题讨论】:

    标签: vue.js


    【解决方案1】:

    显然我的代码没有错,毕竟我只需要从响应中包含对象数组的名称就可以在 v 中获得我想要的 (cart_content.data),感谢您在这里帮助我,感谢您时间

    【讨论】:

      【解决方案2】:

      methods: {
      getsomething(){
      var apicall = axios.get("https://jsonplaceholder.typicode.com/users");
      apicall.then(resp => {
      for(var x = 0; x < resp.data.length; x++){
      for(var dataCount = 0; dataCount < resp.data.length; dataCount++)
      {
      if(resp.data[dataCount].id == resp.data[x].id)
      {
      this.cart_content = resp.data[x].id;
      }
      }
      }
      })
      }
      }
      <template>
      <div>
        <div v-if="cart_content">
                <ul v-for="i in cart_content" :key="i.id">
                  <li>
                    <p>{{i.name}}</p>
                    <p>{{i.items.quantity}}</p>
                    <p>{{i.items.unit_price}}</p>
                  </li>
                </ul>
              </div>
      </div>
      </template>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>

      【讨论】:

        【解决方案3】:

        因为您的数据是以异步方式收集的,所以它最初对您的组件不可用,因此会出错。您需要在组件生命周期方法中获取数据,如下所示:

        import axios from 'axios';
        
        export default {
          data() {
            return {
              cart_content: [],
              id: ''
            }
          },
          created() {
            this.getOrder(this.id)
          },
          methods: {
            getOrder(id) {
              axios.getOrder(id)
                .then(response => {
                  this.cart_content = response.data;
                });
            }
          }
        }
        

        Working CodeSandbox Example

        【讨论】:

        • 嗨,我很欣赏你试图向我解释你的解决方案,虽然我无法让它工作,因为你的解决方案是静态的,我用来过滤 API 中内容的 ID 来自表我忘了包括表格,但它只是一个简单的表格,其 ID 在单击时传递给函数,您能告诉我那部分吗
        • 这个创建的方法也会在我刷新后立即触发,但仍然无法从 API 获取数据
        • @ErrolBoneo 如果您可以添加有关您的代码的更多详细信息,我可以尝试进一步帮助您
        猜你喜欢
        • 2021-09-05
        • 2020-04-01
        • 2020-03-11
        • 2016-03-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-22
        • 2017-11-27
        • 2019-08-10
        相关资源
        最近更新 更多