【发布时间】:2018-09-23 01:28:54
【问题描述】:
我目前正在努力学习 vue 并在整个组件概念上苦苦挣扎。
假设我有一些定义选项卡的组件(如浏览器选项卡)。
这个组件有一个叫做name的prop。
所以你可能会像这样使用组件:
<tab :name="tab.display_name"></tab>
但是,可以说事情需要更复杂一些。例如,您不仅希望名称是字符串,还希望是常规 HTML。好的,所以,你可以在 v-html 指令中使用 prop 并像这样使用 tab 组件:
<tab :name="'<span class=\'fancy-styling\'>' + tab.display_name + '</span>'"></tab>
由于所有引用,我花了一段时间才弄清楚。有没有办法逃离这个逃生地狱(双关语完全是故意的)?
我怎样才能把它放到它自己的 sn-p/模板中?
如果我们让它变得更复杂——比如说我们要求 prop 是一个 vue 组件呢?
<tab :name="'<my-custom-component @click="onClick()">' + tab.display_name + '</my-custom-component>'"></tab>
最后一个在多个级别上是无效的,其中最重要的是引用的混乱。
我将如何做到这一点?最好的方法是什么?
【问题讨论】:
-
<tab :name=`<span class="fancy-styling">${tab.display_name}</span>`></tab>使用为解决转义和连接地狱而创建的 ES6 模板文字。 -
我一般使用 webpack 和 es6(不确定是哪个预设),编译失败。但是以下方法有效:
<tab :name="`<span class='fancy-styling'>${tab.display_name}</span>`"></tab>所以我不会说这是逃避任何地狱,只是延迟了问题。 -
是的,不小心把外引号去掉了。
标签: javascript vue.js vuejs2 vue-component