我有一个非SPA网络应用程序,它有Vue个组件,运行非常好.然而,我正在寻找一种通过外部API加载包含Vue个HTML的方法.

所以,我只需调用/ajax/dialogbox/client/add,它返回包含Vue个组件的HTML,比如:

<h1>Add client</h1>
<div>My static content</div>
<my-component></my-component>

但显然<my-component></my-component>没有任何作用.

有没有办法在Vue人中做到这一点?

推荐答案

Vue中有compile function个可用于编译模板以呈现函数.使用编译后的函数需要比您提供的更详细的信息(例如,如果需要将返回的模板与数据一起使用),但这里有一个示例.

console.clear()

Vue.component("my-component",{
  template: `<h1>My Component</h1>`
})

const template = `
<div>
<h1>Add client</h1>
<div>My static content</div>
<my-component></my-component>
</div>
`

new Vue({
  el: "#app",
  data:{
    compiled: null
  },
  mounted(){
    setTimeout(() => {
      this.compiled = Vue.compile(template)
    }, 500)
    
  }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.3.4/vue.js"></script>
<div id="app">
  <component :is="compiled"></component>
</div>

请注意,在这个示例中,我将您的示例模板包装在一个div标记中.Vue要求Vue或组件的单个根元素上没有.

Vue.js相关问答推荐

VueJS不会呈现一个名为None的组件""

Vue CDN的html工作,但v—如果不工作

Vutify-v-工具提示-不使用键盘轻击按钮显示

从组件中检索 Shopware CMS 编辑器中的自定义实体数据

Nuxt3: 安装vue3-spinner (error: require is not defined in ES module scope)

VueJS3 - 在 for 循环中获取元素的句柄

Vue,Composition API:如何从react 式转换中跳过深度嵌套的属性?

如何从mustache内的过滤器输出html

混合使用 React 和 Vue 是个好主意吗?

正确使用 Vue $refs

如何为 Vue 应用提供 robots.txt

Vuetify v-select 组件宽度变化

将 Vuetify 从 1.5 升级到 2 时,Sass-loader 错误 'options has an unknown property 'indentedSyntax''

Vuetify - 根据另一个 Select 选项过滤 Select 数据

Vue 3 组合 API,如何在 setup() 函数中获取上下文父属性?

VS代码中的红点是什么意思

如何在 vuetify 中将工具提示添加到数据表标题?

Nuxt.js - API 调用的最佳场所

基本 vue.js 2 和 vue-resource http 获取变量赋值

如何在 VeeValidate 中自定义错误信息(字段名称)?