Spec-Zone.ru › Marionette.js 2

Marionette.Renderer

Объект Renderer был извлечён из процесса рендеринга ItemView, чтобы создать согласованный и повторно используемый метод рендеринга шаблона с данными или без них.

Индекс документации

  • Базовое использование
  • Предкомпилированные шаблоны
  • Настройка выбора и рендеринга шаблонов
  • Использование предкомпилированных шаблонов

Базовое использование

Основное использование Renderer заключается в вызове метода render. Этот метод возвращает строку, содержащую результат применения шаблона, используя объект data в качестве контекста.

var template = "#some-template";
var data = {foo: "bar"};
var html = Marionette.Renderer.render(template, data);

// do something with the HTML here

Если вы передаёте template, который приводит к ложному значению, метод render выбросит исключение, указывая на отсутствие предоставленного шаблона.

Предкомпилированные шаблоны

Если параметр template функции render является функцией, рендерер рассматривает её как предкомпилированный шаблон и не пытается его повторно скомпилировать. Это позволяет любому представлению, поддерживающему параметр template, указать функцию предкомпилированного шаблона как значение template.

var myTemplate = _.template("<div>foo</div>");
Marionette.ItemView.extend({
  template: myTemplate
});

Функция шаблона не должна быть каким-то конкретным движком шаблонов. Она должна лишь быть функцией, которая возвращает допустимый HTML в виде строки из параметра data , переданного в функцию.

Настройка выбора и рендеринга шаблонов

По умолчанию рендерер принимает объект селектора jQuery в качестве первого параметра и необязательный объект данных JSON в качестве второго параметра. Затем он использует TemplateCache для загрузки шаблона по указанному селектору и рендерит шаблон с предоставленными данными (если они есть) с помощью шаблонов Underscore.js.

Если вы хотите переопределить способ загрузки шаблона, обратитесь к объекту TemplateCache.

Если вы хотите переопределить движок шаблонов, измените метод render, чтобы он работал так, как вам нужно:

Marionette.Renderer.render = function(template, data){
  return $(template).tmpl(data);
};

Эта реализация заменит рендеринг по умолчанию Underscore.js рендерингом шаблонов jQuery.

Если вы переопределяете метод render и хотите использовать механизм TemplateCache, не забудьте включить код, необходимый для извлечения шаблона из кэша, в свой метод render:

Marionette.Renderer.render = function(template, data){
  var template = Marionette.TemplateCache.get(template);
  // Do something with the template here
};

Использование предкомпилированных шаблонов

Вы можете легко заменить стандартную функциональность рендеринга шаблонов предкомпилированным шаблоном, таким как те, которые предоставляют плагины JST или TPL для AMD/RequireJS.

Для этого просто переопределите метод render , чтобы он возвращал ваш обработанный шаблон с данными.

Marionette.Renderer.render = function(template, data){
  return template(data);
};

Затем вы можете указать функцию предкомпилированного шаблона как атрибут вашего представления template:

var myPrecompiledTemplate = _.template("<div>some template</div>");

Marionette.ItemView.extend({
  template: myPrecompiledTemplate
});

© 2016 Muted Solutions, LLC
Licensed under the MIT License.
https://marionettejs.com/docs/v2.4.7/marionette.renderer.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API