如何解决 alpine js 中意外数量的根元素问题?
How to solve unexpected number of root elements issue in alpine js?
我正在研究 alpine js 中的功能,我需要在模板标签内添加一个单选按钮。
这就是我正在做的。
<div class="customRadioStyle">
<template x-for="name in record.names">
<input type="radio" :value="name.value" :id="name.id">
<label :for="name.id" x-text="name.value"></label>
</template>
</div>
但是这段代码给出了以下错误。
Alpine: <template> tag with [x-for] encountered with an unexpected number of root elements. Make sure <template> has a single root element.
有解决办法吗?
我也检查了这个 link 但仍然找不到解决方案。
https://github.com/alpinejs/alpine/issues/539
如有任何帮助,我们将不胜感激。
按照错误提示进行操作,并确保 <template>
中只有一个元素。在你的情况下,你可以在 <label>
中添加 <input>
或者用 <div>
:
包裹它们
window.MyComponent = () => ({
names: [{
id: 'name1',
value: 'Name 1',
}, {
id: 'name2',
value: 'Name 2',
}, {
id: 'name3',
value: 'Name 3',
}],
});
body {
font-family: monospace;
}
label {
display: flex;
align-items: center;
padding: 4px 0;
}
input {
margin: 0 8px 0 0;
}
<div x-data="MyComponent()">
<template x-for="name in names">
<label :for="name.id">
<input type="radio" :value="name.value" :id="name.id" name="radioGroup">
<span x-text="name.value"></span>
</label>
</template>
</div>
<script src="https://cdn.jsdelivr.net/gh/alpinejs/alpine@v2.x.x/dist/alpine.min.js"></script>
请注意,在事件处理程序中我仍将其称为 e
,但在 HTML 中我使用了 download($event)
而不是 download(e)
。
我正在研究 alpine js 中的功能,我需要在模板标签内添加一个单选按钮。 这就是我正在做的。
<div class="customRadioStyle">
<template x-for="name in record.names">
<input type="radio" :value="name.value" :id="name.id">
<label :for="name.id" x-text="name.value"></label>
</template>
</div>
但是这段代码给出了以下错误。
Alpine: <template> tag with [x-for] encountered with an unexpected number of root elements. Make sure <template> has a single root element.
有解决办法吗?
我也检查了这个 link 但仍然找不到解决方案。 https://github.com/alpinejs/alpine/issues/539
如有任何帮助,我们将不胜感激。
按照错误提示进行操作,并确保 <template>
中只有一个元素。在你的情况下,你可以在 <label>
中添加 <input>
或者用 <div>
:
window.MyComponent = () => ({
names: [{
id: 'name1',
value: 'Name 1',
}, {
id: 'name2',
value: 'Name 2',
}, {
id: 'name3',
value: 'Name 3',
}],
});
body {
font-family: monospace;
}
label {
display: flex;
align-items: center;
padding: 4px 0;
}
input {
margin: 0 8px 0 0;
}
<div x-data="MyComponent()">
<template x-for="name in names">
<label :for="name.id">
<input type="radio" :value="name.value" :id="name.id" name="radioGroup">
<span x-text="name.value"></span>
</label>
</template>
</div>
<script src="https://cdn.jsdelivr.net/gh/alpinejs/alpine@v2.x.x/dist/alpine.min.js"></script>
请注意,在事件处理程序中我仍将其称为 e
,但在 HTML 中我使用了 download($event)
而不是 download(e)
。