【问题标题】:how to distribute pictures by writing one function?如何通过编写一个函数来分发图片?
【发布时间】:2020-11-03 07:16:32
【问题描述】:

我正在研究汇率。我有一份货币清单。每种货币都有自己的形象,自己的数字。而如果这些数字发生了变化,那么在这种情况下图标也会发生变化,例如,有三种情况:如果货币增加了向上箭头,如果向下箭头下降,如果没有变化,点图标.

数据来自后端。也就是说,我通过 mapState 获取所有数据并显示它。然后我通过 v-for 遍历循环并推断元素。所以,我做了如下所有这些:

   <q-list>
        <div class="list-block" v-for="(item, index) in cashData.isNoCross" :key="index + '_exchangeRateList'">
          <q-item class="list-block__element">
            <q-item-section class="list-block__section">
             <img :src="`./statics/icons/currency-icons/${item.currency}.svg`" />
              <span class="indent-left">{{ item.currency }}</span>
            </q-item-section>
          </q-item>
 <q-item>
            <q-item-sectioт>
              <span class="title title--blue">{{ item.buyPrice }}</span>
              <img
                v-if="item.buyStatus != 'unchanged'"
                :src="`./statics/icons/currency-icons/arrow-${item.buyStatus === 'isUp' ? 'isUp' : 'isDown'}.svg`"
              />

              <img
                v-else
                :src="`./statics/icons/currency-icons/arrow-${
                  item.buyStatus === 'unchanged' ? 'unchanged' : 'unchanged'
                }.svg`"
              /> 
              <img
                src="../../statics/icons/currency-icons/arrow-isUp.svg"
              /> 
            </q-item-section>
          </q-item>
         </div>
         </q-list>

这一切都很好。但是代码太多了,因为在其他情况下我必须将图片分发到他们的位置。因此,我被建议将所有内容都写在一个函数中,as here

所以我这样做了:

       <q-item>
            <q-item-section>
              <span class="title title--blue">{{ item.buyPrice }}</span>
              <div v-for="(pic, index) in item.buyStatus" :key="index">
                <img :src="getImgUrl(pic)" />
              </div>
            </q-item-section>
          </q-item>
         ... 
  methods: {
getImgUrl(pic) {

  if (pic === "isUp") {
    return require("../../statics/icons/currency-icons/arrow-" + pic + ".svg");
  } else if (pic === "isDown") {
    return require("../../statics/icons/currency-icons/arrow-" + pic + ".svg");
  } else if (pic === 'unchanged') {
    return require("../../statics/icons/currency-icons/arrow-" + pic + ".svg");
  } else {
    return require("../../statics/icons/currency-icons/" + pic + ".svg");
  }
}

在最后的检查中,我要插入图片,即对应货币的国家的国旗。

我似乎明白需要做什么,但我不能同时明白。如果有任何答案,我将不胜感激。

【问题讨论】:

    标签: javascript image vue.js vuex quasar-framework


    【解决方案1】:

    看起来“pic”变量(item.buyStatus)可以在图像url字符串中使用,而不是对其应用条件,然后根据这些条件将其添加到字符串中。

    这是你想要的吗?

    <q-list>
      <div class="list-block" v-for="(item, index) in cashData.isNoCross" :key="item.currency">
        <q-item class="list-block__element">
          <q-item-section class="list-block__section">
            <img :src="`./statics/icons/currency-icons/${item.currency}.svg`" />
            <span class="indent-left">{{ item.currency }}</span>
          </q-item-section>
        </q-item>
        <q-item>
          <q-item-section>
            <span class="title title--blue">{{ item.buyPrice }}</span>
            <img :src="require(`./statics/icons/currency-icons/arrow-${item.buyStatus}.svg`)"/>
          </q-item-section>
        </q-item>
      </div>
    </q-list>
    

    【讨论】:

      猜你喜欢
      • 2021-09-25
      • 1970-01-01
      • 1970-01-01
      • 2022-12-07
      • 2015-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多