【问题标题】:Adding a "Default" image to my <img> (VUE)将“默认”图像添加到我的 <img> (VUE)
【发布时间】:2018-10-17 16:13:35
【问题描述】:

我有一个区域供人们上传他们自己的用户图像。但如果他们不这样做,我想显示一个默认的。

经过一番谷歌搜索,我发现我可以通过执行以下操作来做到这一点 -

<img :src="creatorImage" @error="defaultAvatar">

但是,我不确定如何创建一个方法来将正确的(默认)图像传递给它。

【问题讨论】:

    标签: vue.js vuejs2 vue-component


    【解决方案1】:

    我是用一个计算属性来做的,像这样:

    <template>
      <img :src="creatorImage" @error="imageError = true"/>
    </template>
    
    <script>
    ...
    data() {
      return {
          imageError: false,
          defaultImage: require("@/assets/imgs/default.jpg")
      };
    },
    computed: {
        creatorImage() {
            return this.imageError ? this.defaultImage : "creator-image.jpg";
        }
    }
    ...
    </script>
    

    【讨论】:

      【解决方案2】:

      我建议为此创建一个组件,因为这听起来像是将在更多地方使用的东西。

      JsFiddle example

      组件

       Vue.component('img-with-default', {     
        props: ['defaultImg'],
        data: function () {
          return {
            defaultAvatar: this.defaultImg || 'https://cdn0.iconfinder.com/data/icons/crime-protection-people/110/Ninja-128.png'
          }
        },
        computed:{
          userImage: function() {
            if(this.uploadedImg != null) {
              return this.uploadedImg;
            } else {
              return this.defaultAvatar;
            }
          }
        },
        template: '<img :src="userImage">'
      })
      

      使用组件将是

      HTML

      <div id="editor">
        <img-with-default></img-with-default>
      
        <img-with-default default-img="https://cdn3.iconfinder.com/data/icons/avatars-15/64/_Ninja-2-128.png" ></img-with-default>
      </div>
      

      JS

      new Vue({
        el: '#editor'  
      })
      

      这样你就有了默认图片。


      如果您愿意,您可以创建一个显示传递的 img src 或默认的组件。

      组件

      Vue.component('img-with-default', {     
        props: ['imgSrc'],
        data: function () {
          return {
            imageSource: this.imgSrc || 'https://cdn0.iconfinder.com/data/icons/crime-protection-people/110/Ninja-128.png'
          }
        },
        template: '<img :src="imageSource">'
      })
      

      并使用它

      HTML

      <div id="editor">
        <img-with-default></img-with-default>
      
        <img-with-default img-src="https://cdn3.iconfinder.com/data/icons/avatars-15/64/_Ninja-2-128.png" ></img-with-default>
      </div>
      

      【讨论】:

      • 很抱歉回复缓慢,进入一年中的忙碌时间!!你的回答绝对完美,我没有像你提到的那样使用它,但是有了你提供的重要信息,我能够做类似的事情并解决它!谢谢!!
      猜你喜欢
      • 1970-01-01
      • 2014-05-13
      • 2013-04-02
      • 1970-01-01
      • 2018-07-24
      • 2011-11-01
      • 2021-12-22
      • 2023-04-03
      • 1970-01-01
      相关资源
      最近更新 更多