Ответ 1
Внутри 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
Я хотел бы создать Ember.Component, который можно использовать либо в блочной форме, либо без блока, если требуется определенное поведение по умолчанию.
Например, в блочной форме:
{{#my-helper}}
...
{{/my-helper}}
Или неблокированная форма:
{{my-helper}}
Где вспомогательный шаблон каким-то образом может обнаружить, что нет блока и ведет себя соответственно. Например, было бы неплохо, если бы какой-то способ обнаружить блок:
{{#if hasBlock}}
{{yield}}
{{else}}
default output
{{/if}}
Для моих требований мне нужно каким-то образом вывести что-то, только если нет блока.
Любые идеи, как это сделать?
Если вы смущены тем, почему мой вопрос такой же, как и принятый ответ, потому что Эмберу удалось принять новый синтаксис, который я точно представлял себе как желательный. Когда я впервые задал этот вопрос, оказалось, что существует недокументированный способ сделать это с помощью {{#if template}}
, но с тех пор он был устаревшим с Ember 2.x и там появился новый синтаксис {{#if hasBlock}}
, который соответствует тому, как я сформулировал свой вопрос.
Внутри 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
Ссылка на документы находится здесь: http://emberjs.com/api/classes/Ember.Component.html#property_template
В документах явно не указано, что атрибут шаблона используется таким образом. Поскольку класс Ember.Component
наследуется от класса Ember.View
, можно сделать вывод, что шаблон компонента действует как шаблон шаблона Ember.View
.
"шаблон" устарел в пользу частичного, например.
{{#if partial}}
{{yield}}
{{else}}
<p>Default content for inline (non-block) form of the component.</p>
{{/if}}
Доступ к template
напрямую в настоящее время устарел, но есть свойство hasBlock
, помеченное функцией (которое в основном делает !!template
под капотом), которое должно использоваться в этом случае.
Флаг функции ember-views-component-block-info
Здесь ссылка на запрос объединенного pull: https://github.com/emberjs/ember.js/pull/10461