Template

Шаблонизатор. В API Яндекс.Карт поддерживается базовый синтаксис языков шаблонов Twig/Django Templates. Поддерживаются следующие операции:

  • Подстановка значения — {{ имя_поля }}.
  • Если запрашиваемое поле данных отсутствует или имеет пустое значение, то можно предусмотреть стандартное значение — {{ имя_поля|default:значение_по_умолчанию }}. Значением по умолчанию может быть число, строка (записывается в кавычках) или другое поле данных.
  • По умолчанию значение обрабатывается функцией escape для предотвращения XSS уязвимости. Для отмены поведения необходимо добавить фильтр "raw"{{ имя_поля|default:значение_по_умолчанию|raw }}.
  • С помощью template.filtersStorage можно создавать свои фильтры и использовать их аналогично описанным выше.
  • Для вставки подмакета необходимо использовать конструкцию {% include имя_поля_или_ключ %}. Шаблонизатор, встретив такую конструкцию, попытается использовать значение в поле как ключ вложенного макета.
  • Условие записывается в виде:

    {% if условие %} ... {% else %} ... {% endif %} или Блок else или elseif можно опустить. Внутри блоков if, else и elseif можно использовать любые конструкции языка шаблонов.

  • Для выполнения итерации по массиву или по объекту нужно использовать конструкцию for.

    {% for значение in массив_или_хеш %} ... {% endfor %}. Внутри блока for можно использовать любые конструкции языка шаблонов.

  • Для получения номера итерации в массиве или имени поля в хеше нужно использовать конструкцию:

    {% for key, value in массив_или_хеш %} ... {% endfor %}.

Конструктор | Методы

Конструктор

Template(text)

Параметры:

Параметр Значение по умолчанию Описание
text *

Тип: String

Строка-шаблон.

* Обязательный параметр/опция.

Примеры:

1.

// Получим имя пользователя из менеджера данных data.Manager.
// Если имя не задано, то в результате получится строка «Незарегистрированный пользователь».
var data = new ymaps.data.Manager({
         user: {
             name: "Виктор",
             age: 25
         },
         home: [55.72725771214265, 37.640390506634006]
     }),
    template = new ymaps.Template('{{ user.name |default: "Незарегистрированный пользователь"}}');

var result = template.build(data);
console.log(result.text); // Выведет в консоль «Виктор».

2.

// Предположим, что у нас есть 3 группы пользователей и в зависимости от группы нужно вывести одно из приветствий.
var data = new ymaps.data.Manager({
         groups: {
             administrator: {
                 id: 1,
                 name: "администратор"
             },
             moderator: {
                 id: 2,
                 name: "модератор"
             },
             user: {
                 id: 3,
                 name: "пользователь"
             }
         },
         userGroupId: 2
     }),
     template = new ymaps.Template('Привет, \
         {% if (userGroupId == 1) %}{{ groups.administrator.name }}\
         {% elseif (userGroupId == 2) %}{{ groups.moderator.name }}\
         {% elseif (userGroupId == 3) %}{{ groups.user.name }}\
         {% else %}guest{% endif %}!'
    );

var result = template.build(data);
console.log(result.text); // Выведет «Привет, модератор!» в консоль.

Методы

Имя Возвращает Описание
build(data)

Object

Возвращает объект со следующими полями:
  • {String} text — результат выполнения шаблонизации;
  • {Object[]} renderedValues — массив c использованными данными из менеджера.

Описание методов

build

{Object} build(data)
Возвращает объект, содержащий следующие поля:
  • {String} text — результат выполнения шаблонизации;
  • {Object[]} renderedValues — массив c использованными данными из менеджера.

Параметры:

Параметр Значение по умолчанию Описание
data *

Тип: IDataManager

Менеджер данных.

* Обязательный параметр/опция.

Пример:

// Получим адрес дома из имеющихся координат и выведем по шаблону
// всех его жильцов в формате: «имя: возраст».
var data = new ymaps.data.Manager({
         users: [
             {name: "Виталий", age: 40},
             {name: "Георгий", age: 20}
         ],
         home: {
             coords: [55.736652, 37.620589],
             address: null
         }
     }),
     template = new ymaps.Template('{{home.address}}: <ul>{% for user in users %}<li>{{user.name}}: {{user.age}}</li>{% endfor %}</ul>');

// Сделаем обратное геокодирование с помощью geocode.
ymaps.geocode(data.get('home.coords')).then(function (res) {
     var address = res.geoObjects.get(0).properties.get('name');
     // Установим в менеджер полученный адрес.
     data.set('home.address', address);

      // Соберём шаблон из имеющихся данных.
     var result = template.build(data);
      // Выведем результат в консоль.
     console.log(result.text);
});