Estoy tratando de usar plantillas para mis vistas de red troncal. Lo intenté con underscore.template para ejecutarlo. El problema es que dado que manifest_version 2 de las extensiones de Chrome existen algunas restricciones de seguridad. Creo que la razón es porque los bloques en línea ya no están permitidos. En este pequeño ejemplo, cargo una plantilla e intento renderizarla. Entonces obtengo el error:Cómo usar plantillas con Backbone.js para Chrome Extension en Manifest Version 2
Error no detectado: generación de código de cadenas no permitidas para este contexto.
Lo probé también con Handlebars.js y una plantilla directamente en mi archivo html. Funciona en una ventana de navegador normal. Pero no es una extensión de Chrome.
Entonces, ¿cómo puedo usar plantillas con backbone.js en una extensión de cromo con manifest_version 2?
Con guión bajo (no funciona):
define [
'jquery'
'backbone'
'lib/facade'
'text!templates/loginTemplate.js'
],
($, Backbone, facade, LoginTemplate) ->
'use strict'
class LoginView extends Backbone.View
tagName: 'div'
events: {
}
initialize: (options) ->
@el = options.el
render: ->
console.log 'LoginView: render()'
$(@el).html(_.template(LoginTemplate, {}))
con un manillar (no funciona):
plantilla en index.html:
<!-- templates -->
<script id="loginTemplate" type="text/x-handlebars-template">
<form class="form-horizontal">
<fieldset>
<legend>Login</legend>
<div class="control-group">
<label class="control-label" for="email">Email:</label>
<div class="controls">
<input type="text" class="input-xlarge" id="email" name="email">
</div>
</div>
<div class="control-group">
<label class="control-label" for="password">Passwort:</label>
<div class="controls">
<input type="password" class="input-xlarge" id="password" name="password">
</div>
</div>
<div class="form-actions">
<button type="submit" class="btn btn-primary">Login</button>
</div>
</fieldset>
</form>
</script>
y en mi opinión:
define [
'jquery'
'backbone'
'lib/facade'
],
($, Backbone, facade) ->
'use strict'
class LoginView extends Backbone.View
tagName: 'div'
events: {
}
initialize: (options) ->
@el = options.el
render: ->
console.log 'LoginView: render()', $("#loginTemplate")
$(@el).html(Handlebars.compile($("#loginTemplate").html()))
Pero eso significa que no podría, p. obtener datos para una colección de un servidor y luego construir dinámicamente la vista de la colección en tiempo de ejecución? Editar: Bien, ahora entiendo. =) – DerMambo