Handlebars - передать переменную в точечную нотацию - PullRequest
0 голосов
/ 05 мая 2020

Я пытаюсь повторно использовать частичное имя rater-table.hbs, которое выглядит так

 <div class="comparison-rater-container">
  {{> rater-table header="Key Stakeholder" valueType=KeyStakeholder}}
  {{> rater-table header="Group 1" valueType=Group1}}
  {{> rater-table header="Group 2" valueType=Group2}}
  {{> rater-table header="Other Stakeholders" valueType=OtherStakeholders}}
</div>

В другом моем файле я могу нормально вызвать переменную заголовка, но у меня проблемы с получением valueType, чтобы соответствовать обозначению скобок. Я пытаюсь использовать его так:

{{ ../pole.summary.benefits.[(valueType)] }}

Если я жестко закодирую слово Group1, оно будет работать нормально, но в остальном оно даст мне нулевое значение. Есть ли способ заставить это работать на руле?

1 Ответ

1 голос
/ 06 мая 2020

Способ поиска свойства Dynami c объекта в Handlebars - это использование помощника поиска . Это будет выглядеть так:

{{lookup ../pole.summary.benefits valueType }}

Однако для поиска требуется строковое значение, которое будет свойством для поиска в объекте, который является первым аргументом. По этой причине вам нужно обязательно заключить в кавычки каждое значение, которое вы присваиваете valueType. Без кавычек Handlebars попытается оценить каждое из них как свойства текущего объекта контекста, и все они в конечном итоге передадут valueType=undefined частичному.

Шаблон должен стать:

<div class="comparison-rater-container">
    {{> rater-table header="Key Stakeholder" valueType="KeyStakeholder"}}
    {{> rater-table header="Group 1" valueType="Group1"}}
    {{> rater-table header="Group 2" valueType="Group2"}}
    {{> rater-table header="Other Stakeholders" valueType="OtherStakeholders"}}
</div>

В качестве альтернативы вы можете go искать и просто передавать каждое значение непосредственно в партиал:

{{> rater-table header="Key Stakeholder" value=../pole.summary.benefits.KeyStakeholder }}

Я создал скрипку для справки.

...