22

ブロック形式で、またはいくつかのデフォルトの動作が必要な場合にブロックなしで使用できる Ember.Component を構築したいと思います。

たとえば、ブロック形式では次のようになります。

{{#my-helper}}
  ...
{{/my-helper}}

または非ブロック形式:

{{my-helper}}

ヘルパー テンプレートが何らかの方法でブロックがないことを検出し、それに応じて動作できる場合。たとえば、ブロックを検出する方法があればいいのですが:

{{#if hasBlock}}
  {{yield}}
{{else}}
  default output
{{/if}}

私の要件では、ブロックがない場合にのみ何かを出力する方法が必要です。

これを行う方法はありますか?

アップデート:

私の質問が受け入れられた回答と同じである理由に混乱している場合は、Ember がたまたま私が最初に望ましいと想像したものとまったく同じ新しい構文を採用したためです。私が最初にこの質問をしたとき、これを使用してこれを行う文書化されていない方法があることが判明しましたが、{{#if template}}それはその後 Ember 2.x で廃止され、{{#if hasBlock}}私の質問の言い回しとたまたま一致する新しい構文があります。

4

4 に答える 4

31

内部でComponent値を確認したいhasBlock

{{#if hasBlock}}
  {{yield}}
{{else}}
  <p>Default content for inline (non-block) form of the component.</p>
{{/if}}

ここに JSBin があります: http://jsbin.com/IWEKere/1/edit

于 2013-09-25T20:13:01.953 に答える
1

直接アクセスtemplateすることは現在推奨されていませんが、この場合に使用する必要がある機能フラグ付きのhasBlockプロパティ (基本的に内部で行われます) があります。!!template

機能フラグはember-views-component-block-info

マージされたプル リクエストへのリンクは次のとおりです: https://github.com/emberjs/ember.js/pull/10461

于 2015-05-21T10:16:01.887 に答える
1

「テンプレート」は、部分的なものを支持して廃止されました。

{{#if partial}}
  {{yield}}
{{else}}
  <p>Default content for inline (non-block) form of the component.</p>
{{/if}}
于 2014-08-25T08:32:02.453 に答える