私は少しの読み込みコンポーネントを持っています。デフォルトのテキストは「読み込み中...」になります。スロットのための良い候補ので、私は私のテンプレートとしてこのようなものを持っている:私は、例えばとロードメッセージを変更することができますスロットの内容が空であるかどうかを確認する
<p class="loading"><i class="fa fa-spinner fa-spin"></i><slot>Loading...</slot></p>
<loading>Searching...</loading>
。しかし、私が望むふるまいは、スロットコンテンツが提供されていない場合だけでなく、スロットコンテンツがヌルまたは空白の場合にもデフォルトメッセージを表示することではありません。現時点では、私がしている場合。 <loading>{{loadingMessage}}</loading>
loadMessageがnullの場合、テキストは表示されません(デフォルトのテキストを表示する場所)。理想的には私はthis.$slots.default
をテストする必要があります。これは、コンテンツが渡されたかどうかを示しますが、それが空であるかどうかをどのようにして調べますか? this.$slots.default.text
は未定義を返します。
私が見ている問題は、 '$ slots.default.text'は常に定義されていないということです。ここにはjsfiddleがあります:https://jsfiddle.net/JohnMoore/rmafyz2x/2/ –
私の悪い '$ slots.default'は配列なので、必要なのは' $ slots.default [0] .text'です: ) – Kano
はい、それは私が探していた答えです。 '$ slots.default [0] .text'をテストできる限り、私は自分が望むものを達成することができます。 –