【问题标题】:dynamically render vue template动态渲染 vue 模板
【发布时间】:2019-09-12 07:20:37
【问题描述】:

我有 vue 模板数据作为字符串。例如,
String s = "<div>{{myData}}</div>"

现在我想在我已经定义的 vue 组件中进行渲染。

<template>
<div>
   HERE I NEED TO PLACE THE STRING
</div>
</template>
<script>
export default {
  name: 'HelloWorld',
  data: {
    myData: "IRONMAN"
  },
}
</script>

现在我希望输出为IRONMAN

我怎样才能做到这一点?请帮忙。 谢谢

【问题讨论】:

  • this.template = Vue.compile('&lt;div&gt;{{myData}}&lt;/div&gt;').render 看起来很有希望。 source
  • 有什么理由让 div 本身不是子组件吗?
  • 这个String s是从哪里来的?

标签: javascript vue.js vue-component


【解决方案1】:

您可以拥有一个文件组件并执行此操作 - 我有一个名为 Dynamic.vue 的组件,它接受 HTML 字符串 - 我使用它来允许用户生成自己的模板并且绑定都正确匹配,例如:

<script>
export default {
  data () {
    return {
      someVar: 'Test'
    }
  },
  props: {
    templateHtml: {
      templateHtml: true,
      type: String
    }
  },
  created () {
    this.$options.template = this.templateHtml
  }
}
</script>

如果你这样称呼它:

this.htmlData = '<div>Hello - {{{someVar}}</div>'
....
<my-dynamic-component :template-html="htmlData" />`

你会看到输出

你好测试

然后您将省略 SFC 中的 &lt;template&gt; 部分。

注意:为了使其工作,您还必须在项目中包含 Vue 编译器(因为它会将 SFC 编译为 Vue 用来显示数据的渲染函数)。

此链接:https://vuejs.org/v2/guide/installation.html#CLI 可以提供有关包含 Vue 编译器的更多信息。

【讨论】:

  • 如何在我的项目中包含 Vue 编译器
  • 你在使用 webpack 吗?你的项目是如何编译的?添加了指向主帖的链接供您阅读。
猜你喜欢
  • 1970-01-01
  • 2020-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-11
  • 2015-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多