首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vue.js nodeName变量

Vue.js nodeName变量
EN

Stack Overflow用户
提问于 2016-11-30 09:39:16
回答 2查看 276关注 0票数 1

我想创建一个模板,例如

代码语言:javascript
复制
<{{ headerType }}>{{ text }}</{{ headerType }}>

并绑定数据

代码语言:javascript
复制
{
  headerType: 'h3', // or h1, h2...
  text: 'Header text'
}

生成的模板不会呈现为HTML,因此我最终会在页面上使用<h3>Header text</h3>作为文本。

有这么好的方法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-30 10:03:27

可以使用带有呈现函数的组件。

代码语言:javascript
复制
Vue.component('heading', {
  props: {
    level: { type: String, required: true }
  },
  render: function (createElement) {
    return createElement(
      'h' + this.level,   // tag name
      this.$slots.default // array of children
    )
  },
});

var app = new Vue({
  el: '#app',
  data: {
    level: "1",
    text: 'hi'
  }
});
代码语言:javascript
复制
<script src="https://unpkg.com/vue/dist/vue.js"></script>


<div id="app">
    <select v-model="level"><option>1</option><option>2</option><option>3</option></select>
    <heading :level="level">
        {{text}}
    </heading>
</div>

票数 4
EN

Stack Overflow用户

发布于 2016-11-30 09:59:47

你可以这样做:

代码语言:javascript
复制
<div id="demo">
  <div v-html="'<' + headerType +'>' + text + '</' + headerType + '>'"></div>
</div>

您也可以在单独的方法或计算属性中移动此字符串创建部分,以获得更好的可读性。

见工作小提琴这里

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40884825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档