Underscore _.template
function принимает строку шаблона в качестве аргумента (и необязательно объект настроек) и возвращает новую предварительно скомпилированную функцию шаблона, которая принимает объект в качестве аргумента.
Этот объект представляет собой данные, используемые в шаблоне:
// creates a template function
var templateFunc = _.template("<span><%= name %></span>");
// render the template using the passed data
templateFunc({ name: "Émile" }); // <span>Émile</span>
По умолчанию template
помещает значения из данных в локальном объеме через with
заявления. Однако вы можете указать одно имя с настройкой variable
.
_.template("Using 'with': <%= data.answer %>", {variable: 'data'})({answer: 'no'});
model.toJSON()
возвращает неполную копию или attributes
хэш модели.
Для достижения эквивалента приведенного выше примера:
var model = new Backbone.Model({ name: "Émile" });
templateFunc(model.toJSON()); // <span>Émile</span>
Для Underscore.js before v1.7, функция шаблона подпись была немного другой:
_.template(templateString, [data], [settings])
Если объект данных был принят, его не возвратил функцию, но сразу же возвратил строку шаблона.
_.template('This is <%= val %>.', { val: "deprecated" });
// This is deprecated.
О, я вижу. '_.template ($ ('# item-template'). html())' возвращает функцию: 'function (a) {return e.call (this, a, b)}' – Jwan622
@ Jwan622 точно, это выглядит иногда сбивает с толку, потому что представления Backbone имеют свойство 'template', которое мы обычно заполняем возвращаемым значением' _.template'. –
А теперь я понял. Благодаря! – Jwan622