提问者:小点点

在VueJs中显示图像和描述


我正在用VueJs和wagtail创建一个博客网站。我正在Json中获取页面和图像数据。我需要将数据显示为

描述:Lorem Ipsum只是印刷和排版行业的伪文本。自15世纪以来,Lorem Ipsum一直是该行业的标准伪文本,当时一位不知名的印刷商拿走了一个打字盘,并将其搅乱以制作一本打字样本书。它不仅保存了五个世纪,而且还跨越了电子排版,基本上没有改变。20世纪60年代,随着包含Lorem Ipsum段落的Letraset表格的发布,以及最近Aldus PageMaker等桌面出版软件(包括Lorem Ipsum版本)的发布,它开始流行起来。

IMG:有事.jpg

描述:Lorem Ipsum只是印刷和排版行业的伪文本。自15世纪以来,Lorem Ipsum一直是该行业的标准伪文本,当时一位不知名的印刷商拿走了一个打字盘,并将其搅乱以制作一本打字样本书。它不仅保存了五个世纪,而且还跨越了电子排版,基本上没有改变。20世纪60年代,随着包含Lorem Ipsum段落的Letraset表格的发布,以及最近Aldus PageMaker等桌面出版软件(包括Lorem Ipsum版本)的发布,它开始流行起来。

IMG:有事.jpg

我该怎么做?这是我的密码。在我的代码中,我无法正确显示

<template>
<div class="app">
  <div>
    <b-card-group deck v-for="item in results" :key="item.id">
      <b-card
        border-variant="primary"
      >
        <b-card-text>
          <div v-for="block in item.body" :key="block.id">
            <div v-if="block.type == 'heading'">
              <h2>{{block.value}}</h2>
            </div>
               <div v-for="image in images" :key="image.id">
                 <div v-if="block.type == 'image'">
                 <img :src="'http://127.0.0.1:8000' + image.meta.download_url" alt="">
               </div>
              <!-- <img :src="'http://127.0.0.1:8000/' + block.value"> -->
            </div>
             <div v-if="block.type == 'paragraph'">
              <h2 v-html="block.value">{{block.value}}</h2>
            </div>
          </div>
        </b-card-text>
      </b-card>
    </b-card-group>
  </div>
</div>
</template>

<script>
// @ is an alias to /src
import axios from 'axios'
export default {
  name: 'Home',
  data () {
    return {
      results: null,
      image_path: null,
      tags: null,
      title: null,
      images: null
    }
  },
  mounted () {
    axios.get('http://127.0.0.1:8000/api/v2/pages/?type=news.NewsPage&fields=intro,body,image_thumbnail')
      .then((response) => {
        this.results = response.data.items
      })
      .catch((error) => (
        console.log(error)
      ))
  },
  created () {
    axios.get('http://127.0.0.1:8000/api/v2/images/')
      .then((response) => {
        this.images = response.data.items
      })
      .catch((error) => (
        console.log(error)
      ))
  }
}
</script>

<style scoped>
.app{
  width: 80%;
  margin: 0 auto;
}
.card{
  border: 2px solid black;

}
  p{
    font-size: 16px;
    font-family: 'Gill Sans', 'Gill Sans MT', Calibri, 'Trebuchet MS', sans-serif;
  }
  h2{
    font-weight: 300;
    font-family: 'Trebuchet MS', 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, sans-serif;
    font-size: 14px;
  }
</style>


共1个答案

匿名用户

我认为您对这段代码有两个问题:

1) 您正在加载已创建并挂载的 ajax 数据。图像未链接到数据,

2) 您还需要对缩进进行排序,因为我认为您的div没有按照您的意愿对齐。请注意,在图像中,您正在循环使用从ajax加载的this.images属性。然而,这些图像不是来自你正在迭代的外部对象吗?还是你打算在每次迭代博客项目时重复相同的图像集?