Допустим, у меня есть маршрут A с подмаршрутами A1 и A2. На всех страницах есть заголовок, который в основном идентичен, но немного отличается в зависимости от того, является ли он A1 или A2.
Наиболее очевидная идея — поместить заголовок в шаблон A, как в
{{! header here }}
{{outlet}}
Однако в момент создания этого заголовка я не знаю, нахожусь ли я на A2 или A2. Поэтому мне нужно будет вручную проверить URL-адрес или маршрут, чтобы увидеть, где я нахожусь, как в
isA1: Ember.computed.equal('application.currentRoute', 'A.A1')
и в шаблоне шапки
{{#if isA1}} {{! A1-specific stuff }} {{/if}}
но это кажется хрупким и уродливым.
Другая альтернатива — не помещать заголовок в A/template
и превратить его в партиал, который вызывается с каким-то параметром из A1/template
и A2/template
. Это будет работать нормально, за исключением того, что жаль не использовать способность Ember указывать разметку в шаблоне родительского маршрута и вводить разметку дочерних маршрутов через {{outlet}}
. Это также приводит к повторному рендерингу заголовка при переключении между A1 и A2, если это имеет значение.
Еще одна идея состоит в том, чтобы подмаршрут «отправлял» действие своему родителю с запросом на включение чего-либо в его заголовок.
Я видел все эти подходы, но есть ли что-то более идиоматичное для этого случая?
renderTemplate
для большинства, если не для всех маршрутов. Прошло некоторое время с тех пор, как я использовал Ember, поэтому сегодня подход к именованным выходам может быть другим. - person MilkyWayJoe   schedule 12.03.2015