vueコンポーネントとインラインテンプレートの間に奇妙な動作が見られます。Vueコンポーネント - 間違った位置でのレンダリング
例#1:インラインテンプレート
これは期待通りに働いています。下の例2のようにvueコンポーネントは変更されていませんが、唯一の違いはテンプレートコンテンツをインラインテンプレートとしてタグにコピーしたことだけです。
参照:https://jsfiddle.net/pobffmnv/
<div class="panel panel-primary">
<div class="panel-heading">Current Clients</div>
<table class="table table-hover">
<thead>
<tr>
<th>Client Name</th>
<th style="text-align: center;">No. Projects</th>
<th style="text-align: center;">Time (7 days)</th>
<th style="text-align: center;">Edit</th>
</tr>
</thead>
<tbody>
<clientlistitem inline-template>
<tr>
<td>Test</td>
<td style="text-align: center;">0</td>
<td style="text-align: center;">0</td>
<td style="text-align: center;">
<div class="btn-group btn-group-xs" role="group">
<button type="button" class="btn small btn-primary">Edit</button>
</div>
</td>
</tr>
</clientlistitem>
</tbody>
</table>
</div>
例#2:
次は私のVueのテンプレートでインラインありません。以下は、インラインテンプレートを削除するコードの変更です。
参照:https://jsfiddle.net/Ld47hoy2/
<template>
<tr>
<td>Test</td>
<td style="text-align: center;">0</td>
<td style="text-align: center;">0</td>
<td style="text-align: center;">
<div class="btn-group btn-group-xs" role="group">
<button type="button" class="btn small btn-primary">
Edit
</button>
</div>
</td>
</tr>
</template>
<script>
export default {
}
</script>
更新ページコード:
<div class="panel panel-primary">
<div class="panel-heading">Current Clients</div>
<table class="table table-hover">
<thead>
<tr>
<th>Client Name</th>
<th style="text-align: center;">No. Projects</th>
<th style="text-align: center;">Time (7 days)</th>
<th style="text-align: center;">Edit</th>
</tr>
</thead>
<tbody>
<clientlistitem></clientlistitem>
</tbody>
</table>
</div>
しかし、上記で、次が表示されます。出力のソースコードを見てみると
ページの、それは私のテーブルの前にレンダリングされたコードを入れているようだ...?私は
...これは<tbody></tbody>
タグの間になるように、その場所に任意の理由はVueのだろう出力コードの代わりに、予想されるものを期待していますか?
驚くばかりです。だから、 "is"を使うことは、DOMのどこにも関係なく、常により安全だと言いますか? – Kannaiyan
@Kannaiyanいいえ、 'is'を使うのはテーブルのような非常に特殊なインスタンスでは* only *です。最も安全なのは、文字列テンプレートまたは単一のファイルコンポーネントを使用することです。答えの最初のリンクを見てください。 – Bert
すごい!おかげさまで、これは魅力的でした。 –