【发布时间】:2017-05-01 07:10:51
【问题描述】:
我实际上是在尝试根据注册的component-name 向我的 VueJS 组件添加一个 CSS 类(以使所有这些特定类型的组件具有相同的样式)。
例如:
Vue.component('dragdropfile', {
// This refers to a unique template element (see HTML below)
template: "#dragdropfile-tmp",
props: ['action']
});
而在Vue组件模板中:
<template id="dragdropfile-tmp">
<form action="{{action}}" method="post" enctype="multipart/form-data">
<div class="fallback">
<input name="file" type="file" multiple />
</div>
<div class="dz-message" data-dz-message>
<div class="dz-default">
<!--
According to VueJS docs / forums, "slot" gets replaced by any innerHTML
passed from the incoming component usage.
-->
<slot></slot>
</div>
</div>
</form>
</template>
最后,它在“index.html”页面中的使用方式是这样的:
<dragdropfile id="someDragDropFiles" action="/upload-please">
Do you have files to upload?<br/>
<b>Drop it here!</b>
</dragdropfile>
现在,虽然我可以为每个组件 HTML 模板手动输入组件名称,但我想自动执行此操作。
是否有 Vue 内部使用的特殊内置 {{binding}} 名称,以便我可以将组件名称注入页面上的结果组件?
结果如下:
或者我只是需要自己将其作为新的组件属性传递?如:
- 手动调用它,如
props: ["componentName", ...]和; - 在模板中引用它为
<form class='{{componentName}}' ...>
这是唯一可行的方法吗?
使用 VueJS 版本:1.0.17
【问题讨论】:
-
请注意,解决方案不一定必须与
v1.0.17一起使用,如果它对这种特殊情况有更好的处理,我可以升级到今天的最新版本 (v2.1.6)。
标签: javascript html css vue.js vue-component