我正在尝试按照vuetify docs上的说明来集成真棒字体专业版。
Vue.use(Vuetify, {
iconfont: 'fa',
icons: {
'dropdown': 'fal fa-arrow-down',
}
})
现有组件不接受这些设置。我自己创建的v-icon组件仍在分配material-icons
类。例如,嵌套在<v-select>
中的图标显示为:
<i class="v-icon material-icons theme--light">arrow_drop_down</i>
我希望在icons.dropdown
下传递新值会更改<v-select>
中的图标。那不是应该的工作方式吗?
答案 0 :(得分:0)
这可能是因为已经安装了Vuetify插件。再次拨打Vue.use
不会做任何事情。
如果您自己打两次电话,那么解决方法很简单。但是,第一次调用它的可能不是您。下面的示例使用的是Vuetify的CDN版本,它会自动安装而无需任何配置选项。
我实际上并没有包含FontAwesome,但是我使用了一些CSS来代替箭头显示红色方块,以表明它具有效果。
new Vue({
el: '#app',
data () {
return {value: 'Red'}
}
})
.fa-arrow-down {
background: red;
height: 8px;
width: 8px;
}
<link href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900|Material+Icons" rel="stylesheet">
<link href="https://unpkg.com/vuetify@1.5.14/dist/vuetify.css" rel="stylesheet">
<script src="https://unpkg.com/vue@2.6.10/dist/vue.js"></script>
<script>
(function() {
const vueUse = Vue.use
Vue.use = function (vuetify) {
Vue.use = vueUse
Vue.use(vuetify, {
iconfont: 'fa',
icons: {
'dropdown': 'fal fa-arrow-down',
}
})
}
})()
</script>
<script src="https://unpkg.com/vuetify@1.5.14/dist/vuetify.js"></script>
<div id="app">
<v-app>
<v-select v-model="value" :items="['Red', 'Green', 'Blue']"></v-select>
</v-app>
</div>
您可以在源代码的第19-21行看到自动安装:
https://github.com/vuetifyjs/vuetify/blob/v1.5.14/packages/vuetify/src/index.ts
在上面的示例中,我在加入Vuetify之前就钩住了Vue.use
来解决此问题。是的,这是一个集体漏洞,但是它允许我插入相关的配置对象。
另一种方法是直接修改$vuetify
来分别戳入图标。
Vue.prototype.$vuetify.icons.dropdown = 'fal fa-arrow-down'
尽管您必须为每个单独的图标执行此操作,但我认为没有等效于通过iconfont
来设置它们。
Vue.prototype.$vuetify.icons.dropdown = 'fal fa-arrow-down'
new Vue({
el: '#app',
data () {
return {value: 'Red'}
}
})
.fa-arrow-down {
background: red;
height: 8px;
width: 8px;
}
<link href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900|Material+Icons" rel="stylesheet">
<link href="https://unpkg.com/vuetify@1.5.14/dist/vuetify.css" rel="stylesheet">
<script src="https://unpkg.com/vue@2.6.10/dist/vue.js"></script>
<script src="https://unpkg.com/vuetify@1.5.14/dist/vuetify.js"></script>
<div id="app">
<v-app>
<v-select v-model="value" :items="['Red', 'Green', 'Blue']"></v-select>
</v-app>
</div>
如果不确定是否已安装Vuetify,可以通过多种方法进行查找。可能最简单的方法是检查Vue.prototype.$vuetify
是否已经存在。另外,您可以在调用debugger
之前放入Vue.use
语句,然后进入代码以查看会发生什么。如果已经安装了Vuetify,您会很快看到它的纾困。