la plantilla se ve así.al pasar una variable a una plantilla de red troncal, ¿cómo hacer referencia a ella en la plantilla?
<div>
<H5>Status for your request</H5>
<table>
<tbody>
<tr>
<th>RequestId</th>
<th><%=id%></th>
</tr>
<tr>
<th>Email</th>
<th><%=emailId%></th>
</tr>
<tr>
<th>Status</th>
<th><%=status%></th>
</tr>
</tbody>
</table>
</div>
Esta es la Vista Javascript que hace la página.
window.StatusView = Backbone.View.extend({
initialize:function() {
console.log('Initializing Status View');
this.template = _.template(tpl.get('status'));
},
render:function (eventName) {
$(this.el).html(this.template());
return this;
},
events: { "click button#status-form-submit" : "getStatus" },
getStatus:function(){
var requestId = $('input[name=requestId]').val();
requestId= $.trim(requestId);
var request = requests.get(requestId);
var statusTemplate = _.template(tpl.get('status-display'));
var statusHtml = statusTemplate(request);
$('#results-span').html(statusHtml);
}
});
Cuando los clics en la entrada, el RequestID es leído y el estado se adjunta en el elemento html con el ID 'resultados-palmo'.
La falla ocurre al reemplazar los valores en html-template con valores variables.
var statusTemplate = _.template(tpl.get('status-display'));
var statusHtml = statusTemplate(request);
La representación falla con el siguiente error.
Uncaught ReferenceError: emailId is not defined
(anonymous function)
_.templateunderscore-1.3.1.js:931
window.StatusView.Backbone.View.extend.getStatusstatus.js:34
jQuery.event.dispatchjquery.js:3242
jQuery.event.add.elemData.handle.eventHandle
Gracias por los punteros. En lugar de aprobar el modelo Backbone, pasé un objeto javascript puro creado a partir del modelo. 'var data = {id: request.get ('id'), emailId: request.get ('emailId'), estado: request.get ('status')};'. Ahora la plantilla lo está renderizando bien. ¿Cuál es la diferencia entre el modelo BackBone y el objeto JS puro? – Nambi
@Nambi: las vistas generalmente muestran modelos o colecciones en Backbone y ese modelo o colección está en ['this.model' o' this.collection'] (http://documentcloud.github.com/backbone/#View-constructor) .Luego, traduce el modelo/colección a una estructura de datos JavaScript simple utilizando el método ['toJSON'] (http://documentcloud.github.com/backbone/#Model-toJSON). Si 'request' es un modelo Backbone, su' var data = {...} 'es lo mismo que' var data = request.toJSON() ', excepto que' toJSON' incluirá todos los atributos 'request'. A la plantilla le importa, solo quiere un objeto con las teclas correctas. –