img-size.vue 711 Bytes
<template>
  <img v-lazy='currentSrc' :alt='alt' v-if='!refresh' />
</template>

<script>
export default {
  name: 'ImgSize',
  props: {
    src: String,
    width: Number,
    height: Number,
    mode: {
      type: Number,
      default: 2
    },
    alt: String
  },
  data() {
    return {
      refresh: false
    };
  },
  watch: {
    src() {
      this.refresh = true;
      this.$nextTick(() => {
        this.refresh = false;
      });
    }
  },
  computed: {
    currentSrc() {
      return (this.src || '')
        .replace('http://', '//')
        .replace('{width}', this.width || '')
        .replace('{height}', this.height || '')
        .replace('{mode}', this.mode);
    }
  }
};
</script>