javascript - Método de plantilla de red troncal. ¿Por qué estamos pasando en un modelo?
backbone.js underscore.js (1)
_.template
función subrayar
_.template
toma una cadena de plantilla como argumento (y opcionalmente un objeto de configuración) y devuelve una nueva función de plantilla precompilada que toma un objeto como argumento.
Este objeto son los datos utilizados dentro de la plantilla:
// creates a template function
var templateFunc = _.template("<span><%= name %></span>");
// render the template using the passed data
templateFunc({ name: "Émile" }); // <span>Émile</span>
De forma predeterminada, la
template
coloca los valores de sus datos en el ámbito local a través de la instrucciónwith
. Sin embargo, puede especificar un solo nombre de variable con la configuración devariable
.
_.template("Using ''with'': <%= data.answer %>", {variable: ''data''})({answer: ''no''});
model.toJSON()
devuelve una copia superficial o el hash de
attributes
del modelo.
Para lograr el equivalente del ejemplo anterior:
var model = new Backbone.Model({ name: "Émile" });
templateFunc(model.toJSON()); // <span>Émile</span>
Para Underscore.js antes de v1.7 , la firma de la función de plantilla era un poco diferente:
_.template(templateString, [data], [settings])
Si se pasó un objeto de datos, no devolvió una función, sino que devolvió la cadena de plantilla representada directamente.
_.template(''This is <%= val %>.'', { val: "deprecated" });
// This is deprecated.
No puedo entender por qué estamos pasando un model.toJSON () a esta plantilla:
app.TodoView = Backbone.View.extend({
tagName: ''li'',
template: _.template($(''#item-template'').html()),
render: function(){
this.$el.html(this.template(this.model.toJSON()));
return this; // enable chained calls
}
});
El ejemplo proviene de este tutorial .
this.template(this.model.toJSON())
es la parte confusa para mí.
El método de la plantilla no parece incluir un argumento, ¿verdad?
Que esta pasando?