bem-site / bem-forum-content-ru

Content BEM forum for Russian speak users
MIT License
56 stars 6 forks source link

Получение данных внутри BEMTREE-шаблона #1010

Open const-l opened 8 years ago

const-l commented 8 years ago

Всем привет! Есть блок с курсами валют. Естественно хотелось бы получать данные для него непосредственно в его bemtree-шаблоне, а не собирать все эти данные до начала сборки и пробрасывать их абсолютно всем блокам, но если честно так и не разобрался, как это можно сделать? Так же была идея сделать немного иначе - запрашивать данные для блока уже с клиента, т. е. по-факту при построении страницы отправляем пустой блок, он при инициализации на клиенте запросил уже сам данные у сервера, тот формирует ответ в контексте блока. Второй вариант мне кажется даже правильней, так как не задерживается отправка всей страницы на время получения данных блока-виджета, но все же хотелось узнать, какой подход использовать лучше? Ну и все-таки хотелось бы подсмотреть где-то вариант асинхронного получения данных внутри bemtree-шаблона

apsavin commented 8 years ago

Привет!

  1. Я очень активно использую возможность получать данные блока непосредственно в bemtree блока. Не советую вам делать также.) Гораздо удобнее, когда получение данных отделено от bemtree и генерация шаблонов происходит синхронно.
  2. Мне тоже кажется второй вариант правильным
  3. Вот здесь пример того, как я получаю данные блока внутри блока. Видно, что я добавил кастомный метод get в bemtree, чтобы делать это было удобно. Вот реализация метода get. В этом же файле фиксы некоторых багов, которые содержит bemtree, если вы используете "bem-xjst": "^0.9.0".

В последних версиях bem-xjst, кстати, bemtree вообще синхронный и из него нельзя слать запросы. И это хорошо)

const-l commented 8 years ago

@apsavin, благодарю за совет) Как раз вот это меня и ввело в ступор, т. к. обновил bem-xjst до 6.4.0, и вопрос асинхронного получения данных в синхронном BEMTREE.apply() в голове ну никак не складывался)