我有以下代码:
<div class="content">
<p>Hello World</p>
</div>
我有以下 div 计数:
data() {
return {
divs: 2
}
}
所以,如果divs
是,2
那么它应该生成两个 div 并将其包裹在div.content
里面,这样它就变成了这样:
<div>
<div>
<div class="content">
<p>Hello World</p>
</div>
</div>
</div>
如您所见,有两个 div,然后只有这个div.content
!我尝试使用,v-for
但它会生成 2 个单独的 div!请帮忙!
首先:这听起来像是一个非常不必要的要求,很可能重新定义问题会带来更好的解决方案!
话虽如此,有一种方法可以实现您尝试使用一些暗 Vue 魔法做的事情;-)
你需要的是一个递归渲染函数:
render: function (createElement) {
return this.level >= 1 ?
createElement('div', [createElement(DynamicDiv, {
props: {
level: this.level-1
}
}, this.$slots.default)]) :
createElement('div', this.$slots.default)
},
props: {
level: {
type: Number,
required: true
}
}
https://vuejs.org/v2/guide/render-function.html
你可以在这里找到一个工作示例:https : //codesandbox.io/s/k9p16wzmyo
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句