Тема: Snakeskin
Показать сообщение отдельно
  #656 (permalink)  
Старый 10.02.2016, 20:48
Аспирант
Отправить личное сообщение для Max Power Посмотреть профиль Найти все сообщения от Max Power
 
Регистрация: 15.12.2015
Сообщений: 83

> Да. Но разумеется можно генерить что угодно, а не только JSON.

Но на самом деле у нас вот здесь

> {contents|json|!html}

contents - это объект JS. И в контроллере в моем случае нужен объект JS. Но в текущей реализации понадобится этот объект перегнать в строку (JSON), а потом эту строку перегнать обратно в объект.

Внутри шаблона мы вольны оперировать как угодно объектами JS и собрать что угодно из чего угодно. Вот бы это "что угодно" можно было бы в контроллер вытаскивать - это стало бы киллер-фичей, *я гарантирую это*

Например:

шаблон:
....
connector myData
  ~ // do something with data
  ~
  ~ var myVar = <get something from outer template scope>.someMethod() + something // ..etc 
  ~ ...
  ~ var bar = <get something from outer template scope>.someMethod() + something // ..etc 
  ~ myVar.foo = bar.
  ~ ...
  ~ // do something with data
  share bar, myVar
....


я не знаю синтаксис SS, тильду (~) использовал для того чтобы ничего не делать с тем что за ней - так какие-то манипуляции с данными, которые видеть ни откуда не нужно. Если ничего делать с данными не нужно - можно сразу - share bar, myVar

в контроллере:
var tpl = ss('my_tpl.ss'); // не знаю как там, но суть ясна
var bar = tpl.connectors.myData.bar;
var myVar = tpl.connectors.myData.myVar;


Коннекторы - это "обратный билет" для данных в контроллер.

Конкретно мой юзкейс - я бы сдалал так:
1) Создал бы родительский шаблон для всех постов, в нем бы создал коннектор.
2) В галпфайле в процессе рендера html-файлов всех постов параллельно бы получил данные из всех коннекторов.
3) Профит, нужные данные контроллер получил, дальше как угодно, это же объекты JS.

Ну как идея?
Ответить с цитированием