How to dynamically compile a component added to a template in VueJS?(如何动态编译添加到 VueJS 模板中的组件?)
问题描述
我正在使用 VueJS 2 构建博客.我的大部分文章都存储为 Markdown 文件,但我希望能够使用 Markdown 未涵盖的功能来涵盖一些更高级的主题.我正在考虑制作这些特殊的帖子 VueJS 组件,它们将在模板中用作 我已经加载了组件,所以我需要做的就是将模板字符串编译成真正的模板.我可能对我的 AngularJS 背景而不是 Vue 想得太多. 我找不到在 VueJS 中动态地将组件添加到模板的任何可靠方向. 您可以使用 Vue.compile.请注意,它并非在所有版本中都可用.文档中对此进行了介绍. 获取与之关联的数据需要更多的工作. I am building a blog with VueJS 2. Most of my articles are stored as Markdown files, but I want to me able to cover some more advanced topics, using features that Markdown doesn't cover. I am considering making these special posts VueJS components that would be used in a template as I have the component loaded already, so all I need to do is compile the template string into a real template. I might be thinking too much with my AngularJS background rather than with Vue. I can't find any solid direction for dynamically adding a component to a template in VueJS. You can compile a template with Vue.compile. Just be aware it's not available in all builds. That's covered in the documentation. Getting the data associated with it is a little more work.
这篇关于如何动态编译添加到 VueJS 模板中的组件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!<article-name>
或 <special-article article-title="{{articleTitle}}">代码>.很简单.
console.clear()常量文章 = [{标题:测试",articleTemplate: "<article-title></article-title>"},{标题:测试2",articleTemplate: "<special-article :article-title='title'></special-article>"},]Vue.component("文章标题",{模板:`<span>文章标题</span>`})Vue.component("特别篇", {道具:[文章标题"],模板:`
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.9/vue.min.js"></脚本><div id="app"><component v-for="article in compiledArticles" :is="article"></component></div>
<article-name>
, or <special-article article-title="{{articleTitle}}">
. Pretty simple.console.clear()
const articles = [
{
title: "Testing",
articleTemplate: "<article-title></article-title>"
},
{
title: "Testing 2",
articleTemplate: "<special-article :article-title='title'></special-article>"
},
]
Vue.component("article-title",{
template: `<span>Article Title</span>`
})
Vue.component("special-article", {
props:["articleTitle"],
template: `
<div>
<h1>{{articleTitle}}</h1>
<p>Some article text</p>
</div>
`
})
new Vue({
el: "#app",
data:{
articles
},
computed:{
compiledArticles() {
return this.articles.map(a => {
// compile the template
let template = Vue.compile(a.articleTemplate)
// build a component definition object using the compile template.
// What the data function returns is up to you depending on where
// the data comes from.
return Object.assign({}, template, {data(){return a}})
})
}
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.9/vue.min.js"></script>
<div id="app">
<component v-for="article in compiledArticles" :is="article"></component>
</div>
本文标题为:如何动态编译添加到 VueJS 模板中的组件?
基础教程推荐
- 响应更改 div 大小保持纵横比 2022-01-01
- 动态更新多个选择框 2022-01-01
- 我什么时候应该在导入时使用方括号 2022-01-01
- 在 JS 中获取客户端时区(不是 GMT 偏移量) 2022-01-01
- 角度Apollo设置WatchQuery结果为可用变量 2022-01-01
- 悬停时滑动输入并停留几秒钟 2022-01-01
- 当用户滚动离开时如何暂停 youtube 嵌入 2022-01-01
- 在for循环中使用setTimeout 2022-01-01
- 有没有办法使用OpenLayers更改OpenStreetMap中某些要素 2022-09-06
- Karma-Jasmine:如何正确监视 Modal? 2022-01-01