<img> v-bind:src不能成功渲染

比如我一个页面的初始化数据里定义一个空对象

 data () {
      return {
        community: {},
      }
    },

而我的<img>标签的写法是

 <img class="uploadImageDiv" mode="aspectFill" :src="community.avatarUrl"/>

当我第一次给community赋值的时候

this.community.avatarUrl = 'XXXXX.png'

讲道理img标签会立即渲染吧? 但是并没有。为什么呢?
估计跟我定义了一个对象有关? 因为我如果直接在data里定义一个avatarUrl='XXXXX.png'且 <img class="uploadImageDiv" mode="aspectFill" :src="avatarUrl"/>的时候是可以直接渲染的

阅读 5k
6 个回答

因为压根没有观察community.avatarUrl这个属性。
set

  community: {
    avatarUrl:''
    },

或者

this.community= {avatarUrl :'XXXXX.png'}

没渲染出来 说明你讲道理没有跟vue讲通,1.直接在data定义img的src的路径,2.如果想this.community.avatarUrl这种方法,请查看vue新增对象的响应式怎么写

this.$set(this.community,"avatarUrl","xxx.png")

vue监测不到对象新增属性,要不就再定义的时候就定义号 如同楼上写的
文档里都有。。

没渲染出来 说明你讲道理没有跟vue讲通

由于 JavaScript 的限制,Vue 不能检测对象属性的添加或删除
正确的写法
this.$set(this.community,'avatarUrl', 'XXXXX.png');

多谢各位大佬! 很清楚!

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题