我得到了一个父组件,它向子组件发送一个数据对象,如下所示:

<child object-data=" url: 'url here', title: 'Title'"></child>

然后在我的children组件上,我通过以下操作获取对象数据:

<script>
    export default {
        props: [
            'objectData'
        ]
    }
</script>

我现在可以毫无问题地使用{{ objectData.title }}.

但是,当涉及到img标签中的URL时,它不会呈现图像.

我try 了以下几点:

<img :src="objectData.url"/>&lt;——不渲染

<img v-bind:src="objectData.url"/>&lt;——不渲染

<img v-bind:src="require(objectData.url)"/>&lt;——抛出警告错误,因为我猜它不是路径而是对象.

<img v-bind:src="{objectData.url}"/>&lt;——抛出错误

<img v-bind:src="{{objectData.url}}"/>&lt;——抛出错误

当我判断dom元素时,它甚至不包含src属性.

如果我写下没有对象的URL,它就会工作.

<img v-bind:src="src/assets/images/icon.png"/>

但我希望我的URL来自父组件.

有没有办法解决这个问题?我在我的网页文件中添加了url加载程序:

            {
                test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
                loader: 'url-loader'
            }

我还try 从计算/方法功能返回objectData.url:

computed: {
     getImageUrl: function() {
           return objectData.url;
     }
}

然后像:src=“getImageUrl”:src=“{{getImageUrl}}”那样使用,我也不幸运.

推荐答案

我也遇到了同样的问题,我用require函数解决了这个问题:

在父组件App.vue中:

<carousel-posts :posts="posts" />

export default {
 name: "app",
data() {
  return {
   posts: [
     {
      img: require("./assets/logo.png"),
      title: "Title 1",
      subTitle: "Sub Title 1",
      body:"lorem ipsum ..."
    }
    ...
    ]
    };
   }
  ...
 }

在子组件中,我通过posts循环并绑定图像src,如下所示:

    <div class="card-body" v-for="(post,idx) in posts" >
      <img class="card-img" :src="post.img" />
         ...
     </div>

        <script>
           export default {
            props: ["posts"],
           ...

所以在你的情况下,你应该有这样的东西:

     <child :object-data="objectData"></child>

        ...
     data(){ 
          return{
            dataObject:{
              url: require('./assets/someimg.png'), 
              title: 'Title'
             }
            }
          }

更新:

我的项目树:

   src
   |_assets
   |   |_logo.png
   |_components
   |   |_CarouselPosts.vue
   |_App.vue

Vue.js相关问答推荐

具有VUE身份验证的Azure AD

VITE:无法为VUE单文件组件加载URL

作为props 传递的原始 ref 的 Vue 3 react 性

如何 for each 动态创建的按钮/文本字段设置唯一变量?

如何在 Nuxt3 中使用 nuxtjs/auth-next 模块?

Nuxt 和 Vite 有什么区别?

v-slot: activator 中 {attrs} 参数的作用是什么?

我可以从手表调用方法并安装吗?

Bootstrap-vue b-table,标题中带有过滤器

全局方法和实例方法有什么区别?

如何在 vuejs 中异步加载图像 src url?

Keycloak:用户基于角色的客户端登录访问限制

等待来自 WDS 的更新信号

如何在 Vue 3 中使用 SSR

请求正在进行时显示加载器

Vue:如何在按钮单击时调用 .focus()

如何使用 JavaScript 按索引删除数组元素?

单击时交换组件

在 Chrome DevTools 中实时更改时 destruct 了 Vue.js 应用程序(Webpack 模板)的页面样式

Vue.js 和 jQuery datepicker/timepicker 双向绑定