【问题标题】:how to access an object element in a vue js list (nuxt)如何访问 vue js 列表中的对象元素(nuxt)
【发布时间】:2019-01-02 10:52:02
【问题描述】:

我有一个这样的对象数组:

{ id: 33617,
  datePublication: 1532266465,
  dateUpdate: 1532266574,
  headline: 'An headline title here',
  images: [ [Object] ] },
{ id: 33614,
  datePublication: 1532265771,
  dateUpdate: 1532271769,
  headline: 'another super headline article',
  images: [ [Object], [Object], [Object], [Object], [Object] ] }

所以我在我的 vue js 模板上迭代:

<v-flex v-for="(ip, i) in ips" :key="i" xs12 sm6 >
    <v-card>
      <v-card-media
        :src="ip.images[0].url"
        height="200px"
      />
      <v-card-title primary-title>
        <div>
          <h3 class="headline mb-0">{{ ip.headline }}</h3>
          <div>Located two hours south of Sydney in the <br>Southern Highlands of New South Wales, ...</div>
        </div>
      </v-card-title>
      <v-card-actions>
        <v-btn flat color="orange">Share</v-btn>
        <v-btn flat color="orange">Explore</v-btn>
      </v-card-actions>
    </v-card>  
  </v-flex>    

这是我的相关脚本:

var api = "https://my api.org/news/fr-FR/2018-25-07";
export default {
data() {
return {};
},
layout: "no-live",
async asyncData({ app }) {
  const ips = await app.$axios.$get(api);
  console.log(ips);
  return { ips };
  }
};

图像数组中的每个对象都应该返回一个 id 和一个 url,所以我想将该 url 作为我的图像中的源,但我有这个错误:无法读取未定义的属性 '0'

似乎我需要对图像数组进行另一个循环,是否有使用 vue JS 的正确方法?

【问题讨论】:

  • 您是否只寻找第一张图片?
  • 是的,我只需要第一张图片的网址

标签: arrays json loops vue.js nuxt.js


【解决方案1】:

如果您在ips 中有任何没有images 的对象,则会收到该错误,

您可以尝试添加条件以使渲染不出错

  <v-card-media
    v-if="ip.images && ip.images[0]"
    :src="ip.images[0].url"
    height="200px"
  />

在这些情况下,我通常会添加&lt;pre&gt;{{ip}}&lt;/pre&gt; 以查看发生了什么。

【讨论】:

    【解决方案2】:

    尝试将 v-if="ip.images" 放在 v-card-media 组件上。您将确保图像不为空且未加载。

    【讨论】:

      猜你喜欢
      • 2021-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-02
      • 1970-01-01
      • 2014-04-25
      • 2011-01-16
      • 1970-01-01
      相关资源
      最近更新 更多