Передайте определенные преобразователи/шаблоны в шаблон с помощью jsViews/jsRender

Я пытаюсь передать конвертеры и/или шаблоны только определенному шаблону. Согласно API. вы можете передавать только помощники, но не конвертеры или шаблоны.

Есть ли способ сделать это или кто-то знает, планируется ли поддерживать это в будущем?

Примечание. Передавать их глобально через $.views.templates({...}) или $.views.converters({...}) на самом деле не вариант, потому что у меня будет путь ко многим и, возможно, даже к шаблонам и конвертерам с конфликтующими именами.


person neo post modern    schedule 08.10.2013    source источник


Ответы (1)


Вы можете объявить конвертеры с вашими шаблонами - и они будут приватными для шаблона. См. Регистрация шаблонов: $.templates(). Найдите "Расширенные сценарии: связывание частных ресурсов с шаблонами".

Кроме того, API для регистрации конвертеров: $.views.converters({...}) также позволяет зарегистрировать конвертер (или набор конвертеры) либо глобально, либо локально только для определенного шаблона. См. раздел "Добавление преобразователей в качестве частных ресурсов для родительского шаблона". Чтобы сделать их локальными или частными для шаблона, просто передайте шаблон в качестве последнего параметра в вашем вызове converters().

Итак, вот шаблон со своим специальным конвертером, объявленным вместе с шаблоном:

$.templates({
  myTemplate: {
    markup: "Use my converter {{myconv:name}}",
    converters: {
      myconv: function(val) { return myCalculatedValue; }
    }
  }
});

Теперь {{myconv:...}} предназначен только для myTemplate и не будет доступен где-либо еще.

Теперь предположим, что я хочу динамически заменить «myconv», все еще в пределах myTemplate. Я могу добавить/изменить его в любое время, используя converters() API:

$.views.converters(
  "myconv",
  function(val) { return myNewUpdatedCalculatedValue; },
  $.templates.myTemplate // Only override it for myTemplate, not globally...
);

Вот несколько связанных ссылок:

person BorisMoore    schedule 09.10.2013
comment
Удивительно! Я смотрел совершенно не туда, я предположил, что это будет похоже на Помощников в стиле link(selector, helpers) или render(helpers). Может быть, вы можете сделать это более очевидным в документации? В любом случае большое спасибо! - person neo post modern; 09.10.2013
comment
@mrs_sheep: локальные преобразователи теперь переопределяют глобальные преобразователи с тем же именем. - person BorisMoore; 29.11.2013