如何在 VueJS 的组件中创建动态 class 值?
How to create a dynamic class value in a component in VueJS?
所以我创建了一个简单的组件:
Vue.component('m-textbox', {
template: `
<div>
<div class="input-field col s12 m6 l6">
<input :id="id" type="text" :value="value" @input="$emit('input', $event.target.value)">
<label :for="id">{{ label }}</label>
</div>
</div>
`,
props: ["id", "value", "label", "for"]
})
我在 html 中这样使用它:
<m-textbox v-model="full_name" id="full_name" label="Full Name"></m-textbox>
现在我想做的是使列可设置。如您所见,默认值为 col 12 m6 l6
。有没有办法让它动态?例如我可以做 <m-textbox v-model="full_name" id="full_name" label="Full Name" classSize="col s12 m6"></m-textbox>
.
如有任何帮助,我们将不胜感激。
希望它应该很简单。不确定语法是否正确,因为我使用的是 webpack 和单个文件组件,如果语法有问题,非常抱歉。
一种方式:
Vue.component('m-textbox', {
template:
`<div>
<div :class="size">
<input :id="id" type="text" :value="value" @input="$emit('input', $event.target.value)">
<label :for="id">{{ label }}</label>
</div>
</div>`
,
props: ["id", "value", "label", "for",
size:
{ type: 'string', default: 'input-field col s12 m6 l6'}]
})
其他方式:
Vue.component('m-textbox', {
template:
`<div class="input-field">
<input :id="id" type="text" :value="value" @input="$emit('input', $event.target.value)">
<label :for="id">{{ label }}</label>
</div>`
,
props: ["id", "value", "label", "for"]
})
并使用它:
<m-textbox v-model="full_name" id="full_name" label="Full Name" v-bind:class="[col, s12, m6]"></m-textbox>
您可以删除组件模板中的外部 div 并简单地将 class 属性添加到您的组件。它甚至会合并您的 classes.
Vue.component('m-textbox', {
template: `
<div class="input-field col">
<input :id="id" type="text" :value="value" @input="$emit('input', $event.target.value)">
<label :for="id">{{ label }}</label>
</div>
`,
props: ["id", "value", "label", "for"]
})
<m-textbox v-model="full_name" id="full_name" label="Full Name" class="s12 m6 l6"></m-textbox>
所以我创建了一个简单的组件:
Vue.component('m-textbox', {
template: `
<div>
<div class="input-field col s12 m6 l6">
<input :id="id" type="text" :value="value" @input="$emit('input', $event.target.value)">
<label :for="id">{{ label }}</label>
</div>
</div>
`,
props: ["id", "value", "label", "for"]
})
我在 html 中这样使用它:
<m-textbox v-model="full_name" id="full_name" label="Full Name"></m-textbox>
现在我想做的是使列可设置。如您所见,默认值为 col 12 m6 l6
。有没有办法让它动态?例如我可以做 <m-textbox v-model="full_name" id="full_name" label="Full Name" classSize="col s12 m6"></m-textbox>
.
如有任何帮助,我们将不胜感激。
希望它应该很简单。不确定语法是否正确,因为我使用的是 webpack 和单个文件组件,如果语法有问题,非常抱歉。
一种方式:
Vue.component('m-textbox', {
template:
`<div>
<div :class="size">
<input :id="id" type="text" :value="value" @input="$emit('input', $event.target.value)">
<label :for="id">{{ label }}</label>
</div>
</div>`
,
props: ["id", "value", "label", "for",
size:
{ type: 'string', default: 'input-field col s12 m6 l6'}]
})
其他方式:
Vue.component('m-textbox', {
template:
`<div class="input-field">
<input :id="id" type="text" :value="value" @input="$emit('input', $event.target.value)">
<label :for="id">{{ label }}</label>
</div>`
,
props: ["id", "value", "label", "for"]
})
并使用它:
<m-textbox v-model="full_name" id="full_name" label="Full Name" v-bind:class="[col, s12, m6]"></m-textbox>
您可以删除组件模板中的外部 div 并简单地将 class 属性添加到您的组件。它甚至会合并您的 classes.
Vue.component('m-textbox', {
template: `
<div class="input-field col">
<input :id="id" type="text" :value="value" @input="$emit('input', $event.target.value)">
<label :for="id">{{ label }}</label>
</div>
`,
props: ["id", "value", "label", "for"]
})
<m-textbox v-model="full_name" id="full_name" label="Full Name" class="s12 m6 l6"></m-textbox>