vue.js - vuetify 中的动态 mdi svg 图标

标签 vue.js vuetify.js vue-composition-api

我正在尝试在 v-select 中渲染动态 v-icon。
我需要用导入的值替换图标名称

            <v-select v-model="data.type" dense :items="typeItems" :label="$tc('Type')">
              <template v-slot:item="data">
                <v-list-item>
                  <v-list-item-icon>
                    <v-icon>{{data.item.icon}}</v-icon>
                  </v-list-item-icon>
                  <v-list-item-content>
                    <v-list-item-title v-html="data.item.text"></v-list-item-title>
                  </v-list-item-content>
                </v-list-item>
              </template>
            </v-select>

data.item.icon 是一个字符串,例如“mdiArrowLeft”。

mdiArrowLeft 被导入:从“@mdi/js”导入 {mdiArrowLeft} 并在 setup() 中返回。我正在使用composition-api。

我无法用导入的值替换字符串 {{data.item.icon}}
渲染的模板是 mdiArrowLeft 而不是图标。

最佳答案

src/plugins/vuetify.js

指定 mdiSvg 图标字体:

import Vue from 'vue'
import Vuetify from 'vuetify/lib'

Vue.use(Vuetify)

export default new Vuetify({
  icons: {
    iconfont: 'mdiSvg',
  },
})

Vue 组件

...
<v-icon>{{getIcon(data.item.icon)}}</v-icon>
...

<script>
  export default {
    methods: {
      async getIcon (iconName) {
        return { [iconName]: icon } = await import('@mdi/js')
      }
    }
  }
</script>

关于vue.js - vuetify 中的动态 mdi svg 图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61533321/

相关文章:

node.js - VueJs : Error with server side rendering and Typescript

javascript - 如何使用 Vuetify 网格在 v-for 循环中显示商店项目?

javascript - 如何安装和使用V-Calendar(vue.js)?

typescript - 使用 TypeScript 输入 Vue.js 3 的 Prop

typescript - 将 Prop 传递到设置 : Property 'user' does not exist on type 时,VueJS 3 Composition API 和 TypeScript 类型问题

vue.js - 如何为两个不同的生产版本使用不同的 API 端点?

javascript - Vue.js 将值显示为价格,但将其保留为 int

Laravel 8 (Inertia js) - 获取 Vue 错误 'app.js:30559 [Vue warn]: Error in created hook: "错误 : Cannot find module. ..'

javascript - 输入/V 模型的 Vue 过滤器

javascript - 在 Options API (Vue Js) 中使用 Composition API