我正在尝试使用vue + vuetify创建一个Web组件。
我知道vuetify不支持web组件,但我还是决定试一试。
除了一些小事情,比如必须手动导入CSS,或者手动注册所有的vuetify组件,一切似乎都很好。
然而,我遇到了一个很大的障碍,那就是试图在web组件中使用<v-menu>
。在构建完成后,按钮一旦被点击就什么也不做。我在控制台中只得到一个警告:
console.ts:34 [Vuetify] Unable to locate target [data-app]
我已经尝试确保data-app
存在,但无济于事。
我正在构建web组件使用:
npx vue-cli-service build --target wc --name tl-test --inline-vue
当我将vue项目(通过yarn serve
运行)与web组件输出(dist/demo.html
)进行比较时,我可以看到,当我单击v-menu
触发按钮时,下拉框的DOM被创建并附加到页面DOM。这似乎不会发生在web组件上。
我错过了什么会阻止<v-menu>
工作?
重现问题的存储库:https://github.com/samupl/vuetify-webcomponent-issue
可以将一个HTML节点传递给v-menu的attach
prop。
这将防止Vuetify使用不适合影子dom的查询选择器。
例如:
<v-menu :attach="$parent.$el">
...
</v-menu>