когда вы используете динамические данные в вызове дочернего шаблона (например, индекс в каждой итерации), вы должны быть осторожны, потому что все может работать не так, как вы ожидаете.
, например, при использовании чего-то подобного
{{#each report.sections}}
{#child child @data.parentIndex={{@index}} }
<br />
{{/each}}
то, что передается фактически дочернему шаблону, это "parentIndex": "0 "
, это может быть неочевидно, но при передаче данных с использованием синтаксиса @data.parentIndex
все пробелы имеют значение, и поскольку вы используете {#child child @data.parentIndex={{@index}} }
, который содержитпробел (}
) в конце, затем конечное значение содержит этот пробел.
правильный способ передать это должен быть {#child child @data.parentIndex={{@index}}}
, но это выдает ошибку руля, потому что она запутывается скобкамисинтаксис дочернего вызова.
работает следующим образом:
родительский шаблон:
{{#each report.sections}}
{{{callChild @index}}}
<br />
{{/each}}
помощники родительского шаблона:
function callChild(parentIndex) {
return '{#child child @data.parentIndex=' + parentIndex + '}'
}
дочерний шаблон:
{{parentIndex}}
{{#with (lookup report.sections parentIndex)}}
Rendered: {{name}}
{{/with}}
причина, по которой это работает, состоит в том, что мы избегаем путаницы рулей с помощью синтаксиса скобок, мы делаем это путем динамического конструирования дочернего вызова с помощью помощника, который в конце концов разрешается после обработки шаблона рулями.
наконец-то здесь - это живой пример этого случая
надеюсь, это поможет вам.