これはおそらく私が偶然見つけたバグだと思います。私は、これはコンポーネントの警告Vue.js取得しています:テンプレートとvue.jsを使ったルートノードの奇妙さ
vue.js:2611 [ヴューが警告]:それは複数のノードが含まれている可能性があるため、コンポーネントのルート要素として
<template>
を使用することはできません:
だから私は(確かにテンプレートノードのそれぞれが1つだけのノードが含まれている)、それは上の窒息だ複数のノードであるように思われ、2つのテンプレートノードを持つ
<template id="tpl-field">
<template v-if="fieldType==='checkbox-inline'">
<label class="checkbox-inline">[SNIP]</label>
</template>
<template v-else>
[SNIP]
</template>
</template>
:問題は、このように思われます。しかし、これはVueのif-elseです。ノードの1つが存在する場合、他のノードは論理的には存在できません。
ここの問題のデモ:https://jsfiddle.net/jonmor51/Ldz3k0jp/1/。私がdiv内のすべてをラップすると、動作します。しかし、それがなければ、それは失敗する。 (残念なことに、私がこれを使用したいコンテキスト、すなわちBootstrapグリッド内のインラインチェックボックスの場合、divの折り返しが問題を壊します)。
あなたは正しいです、それは面白いです。含まれている要素にv-ifとv-elseを移動すると、表面的に同じ状況が存在しても問題はありません(つまり、2つの代替ルート要素、この時点ではテンプレートは除外されます)。だから、問題を引き起こすのはちょうどテンプレートのようです。 https://jsfiddle.net/jonmor51/Ldz3k0jp/3/ –
@JohnMoore「テンプレート」の削除を提案したとき、私は実際にそれを試していませんでした...それで、vueが正しくあるかどうかを知ることができます'v-if'が使用されているときは1つのルート要素です。そして、 'template'はルートとして許可されていません。vueは直進し、最終的にレンダリングされるものを分析せずに警告を出します。 –