【发布时间】:2019-07-31 13:01:14
【问题描述】:
我正在尝试使用 vue 动态加载外部库。在这种情况下,这些库有我想使用的 vue 组件。我目前的设置如下:
- 以编程方式从 CDN 加载脚本:
// The src CDN can change.
const src = 'https://cdn.jsdelivr.net/npm/vuetify/dist/vuetify.js';
const newScript = document.createElement('script');
newScript.src = src;
newScript.async = false;
newScript.type = 'text/javascript';
document.body.appendChild(newScript);
- 稍后在代码中,我想在组件加载完成后动态使用它:
<component :is="dynamicComponent" v-bind="componentProperties">
<!-- More things inside -->
</component>
其中dynamicComponent 是可以更改的数据属性,设置为VBtn(也尝试过v-btn)。
但是这种方法不起作用,因为组件尚未全局注册。
我收到以下错误:Unknown custom element: <VBtn>。
我也试过在window.Vuetify可用后做Vue.use(window.Veutify),问题仍然存在。
我也尝试过等待组件可用
waitFor(() => Vue.options.components[dynamicComponent]).then(...)
但是它永远不会进入then 函数。有趣的是,当我在控制台中输入 Vue.options.components['VBtn'] 时,我确实得到了组件。
我已经为此苦苦挣扎了一段时间。任何建议、文档、参考或不同的方法都将不胜感激,请注意我需要依赖动态加载库和动态加载其组件。
提前致谢。
【问题讨论】:
标签: javascript vue.js dynamic components load