2016-10-27 3 views
0

Я задавался вопросом, как я могу предоставить полный блок, который я передаю своему компоненту. я уже нашел это https://guides.emberjs.com/v2.9.0/components/block-params/ , но я не понимаю, почему естьДоходность полного блока в ember

//my-component.hbs 
{{#if hasBlock}} 
    {{yield post.title}} 
    {{yield post.body}} 
    {{yield post.author}} ... 

Почему я должен назвать то, что я хочу, чтобы дать? Это не имеет смысла, потому что я хочу дать (отобразить) весь блок, который я передаю компоненту, независимо от того, что я там делаю.

Так что я попытался просто использовать выход только:

//my-component.hbs 
{{#if hasBlock}} 
    {{yield}} ... 

и использовать компонент таким образом:

//myroute.hbs 
{{#my-component car=model}} 
    {{car.name}} - {{car.color}} 
{{/my-component}} 

Эта не работают, но я ожидал, что «car.name - car.color 'будет отображаться в {{yield}} компонента ...

Может кто-нибудь объяснить мне это, пожалуйста?

+0

Вы пробовали ember-twiddle.com, что является удивительным для изучения уголька и воспроизведения конкретных вопросов и просить разъяснений. у вас больше шансов получить то, что вам нужно. – kumkanillam

+0

Спасибо, я буду использовать его в следующий раз –

ответ

0

Это немного сбивает с толку, признаюсь. То, что происходит, это компонент, который дает (возвращающие) значения, которые вы можете использовать в своем блоке. Попробуйте что-то вроде этого:

{{#my-component car=model as |car|}} 
    {{car.name}} - {{car.color}} 
{{/my-component}} 

Тогда в компоненте:

{{#if hasBlock}} 
    {{yield car}} 
{{else}} 
    default no-block template goes here... 
{{/if}} 

Вот рабочий Twiddle: https://ember-twiddle.com/9a0efb92ebea6f206236a32e3c3e6053?openFiles=templates.index.hbs%2Ctemplates.components.my-component.hbs

+0

спасибо. Так ли это какая-то безопасность, то есть я могу использовать только значения и модели, которые определены в доходности? –

+0

Извините, просто увидел этот вопрос. На самом деле это не проблема безопасности. Концепция дизайна компонентов заключается в том, что они не имеют никакого контекста - они не знают о текущей модели. Чтобы обеспечить повторное использование, все данные должны быть введены в компонент из маршрута. –