msq*_*qar 9 javascript vue.js vue-component vuejs2
我有一个父组件,它向子组件发送一个数据对象,如下所示:
<child object-data=" url: 'url here', title: 'Title'"></child>
然后在我的子组件上,我通过执行以下操作获取此对象数据:
<script>
export default {
props: [
'objectData'
]
}
</script>
Run Code Online (Sandbox Code Playgroud)
现在,出于某种原因,我可以毫无问题地使用标题{{ objectData.title }}
并显示出来。
但是当涉及到 img 标签内的 URL 时,它不会呈现图像。
我尝试执行以下操作:
<img :src="objectData.url"/>
<--- 不渲染
<img v-bind:src="objectData.url"/>
<--- 不渲染
<img v-bind:src="require(objectData.url)"/>
<-- 抛出警告错误,因为我猜它不是路径而是对象。
<img v-bind:src="{objectData.url}"/>
<--- 抛出错误
<img v-bind:src="{{objectData.url}}"/>
<--- 抛出错误
当我检查 dom 元素时,它之后甚至不包含 src 属性。
如果我写下没有对象的 URL,它就可以工作。
<img v-bind:src="src/assets/images/icon.png"/>
但我希望我的 URL 来自父组件。
关于如何解决这个问题的任何想法?我在我的 webpack 文件中添加了 url-loader:
{
test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
loader: 'url-loader'
}
Run Code Online (Sandbox Code Playgroud)
我还尝试objectData.url
从计算/方法函数返回:
computed: {
getImageUrl: function() {
return objectData.url;
}
}
Run Code Online (Sandbox Code Playgroud)
然后像:src=“getImageUrl”
or一样使用它: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 ..."
}
...
]
};
}
...
}
Run Code Online (Sandbox Code Playgroud)
在子组件中,我循环遍历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"],
...
Run Code Online (Sandbox Code Playgroud)
所以在你的情况下,你应该有类似的东西:
<child :object-data="objectData"></child>
...
data(){
return{
dataObject:{
url: require('./assets/someimg.png'),
title: 'Title'
}
}
}
Run Code Online (Sandbox Code Playgroud)
更新 :
我的项目树:
src
|_assets
| |_logo.png
|_components
| |_CarouselPosts.vue
|_App.vue
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5772 次 |
最近记录: |