Vue动态导入组件

时间:2018-08-29 02:18:06

标签: vue.js vuejs2 vue-component

默认情况下,我必须声明要在components prop中使用的组件。我想在Ajax请求中获取组件名称,在应用程序运行时注入组件并显示它们,而不是在应用程序启动时以components属性显示。

在官方文档中,动态组件部分显示了如何在运行时切换组件,异步组件部分显示了在应用启动时如何在异步请求中加载组件。他们两个都无法解决我的问题。

1 个答案:

答案 0 :(得分:0)

我通过在指令中使用is解决了我的问题。该组件在对象中声明,并通过Ajax作为javascript组件异步请求该组件。并在new function(...)中进行解析。

主要代码,未经测试。

let rawComp="{...}" // Your vue component declaration js object via ajax
let rawHTML="<div>...</div>"//Also your component HTML template
let rawCompWrapper=`return ${rawComp}`
let comp = (new Function(rawCompWrapper))()
comp.template = rawHTML
comp.foo=bar//Other tasks for parsing your component
<div :is="comp" v-bind="{your:'propertyValues'}"></div>