Можно ли результат выполнения одного helper’а передать в другой

Да, можно. Для этого используется специальный синтаксис внутри шаблонов:

{{helper1 (helper2 myVal)}}

Тут результат выполнения helper2 передается как параметр в helper1. При обновлении myVal, поменяется и значение, переданное в helper1.

Данный синтаксис поддерживает произвольную вложенность. Однако, тут все равно есть свои рамки — физические и логические. Физические — это ограничения вычислительных мощностей. На своем рабочем железе я получил ошибку вида «Maximum call stack size exceeded» где-то в районе 340-350 вложенных helper’ов. Понятно, что в реальном проекте ничего подобного не будет. Даже больше — там не будет вложенности больше 4 (мое мнение). Это уже как раз «логическое» ограничение — разработчику довольно тяжело воспринимать конструкцию вида (и более сложные):

{{one (two (three 'a') (one (two (three 'b'))) (one (three 'c')))}}

, , ,

Оставить комментарий

Top ↑ | Main page | Back