【发布时间】:2019-09-20 18:45:14
【问题描述】:
我是 Nuxt 框架的新手,我想将材料设计库集成到我的项目中(官方:https://material.io/develop/web/)。
我用这个内容制作了一个插件:
import Vue from "vue"
import mdcAutoInit from "@material/auto-init"
import { MDCTextField } from "@material/textfield"
import { MDCTextFieldIcon } from "@material/textfield/icon"
import { MDCSelect } from "@material/select"
import { MDCFormField } from "@material/form-field"
import { MDCRadio } from "@material/radio"
function init() {
/** Select */
mdcAutoInit.register("select", MDCSelect)
/** TextField */
mdcAutoInit.register("textfield", MDCTextField)
mdcAutoInit.register("textfieldIcon", MDCTextFieldIcon)
/** Radio */
mdcAutoInit.register("formfield", MDCFormField)
mdcAutoInit.register("radio", MDCRadio)
// /** Auto Init */
mdcAutoInit.apply()
}
const plugin = {
install(vm) {
console.log("Installing")
vm.component(MDCTextFieldIcon)
vm.component(MDCTextField)
vm.component(MDCSelect)
vm.component(MDCFormField)
vm.component(MDCRadio)
init()
}
}
if (typeof window !== "undefined" && window.Vue) {
window.Vue.use(plugin)
} else {
Vue.use(plugin)
}
我已经在 nuxt.config.js 的插件部分添加了它。
当我加载页面时它似乎可以工作(例如,文本字段动画正在工作)但是当我使用 nuxt-link 更改页面时,文本字段未初始化。
有谁知道如何让 Material Design 为每个加载的组件加载 init 函数?
提前致谢!
【问题讨论】:
-
that 有一个 npm 包。
-
感谢您的回答,但我想使用包含所有新材料设计元素的官方库(例如:textflieds)
-
您尝试使用的组件,例如@material/select 不是 vue 组件,所以你的 vue.component 应该是一个 vue 组件而不是一些随机的东西。 PS 也完全不需要你在最后检查窗口,应该只是 Vue.use(plugin)。 PSS 我建议使用 vuetify
标签: vue.js nuxt.js material-components-web