即时尝试为我的骨干视图使用模板。我用underscore.template试着让它运行。问题是,由于chrome扩展的manifest_version 2有一些安全限制。我认为这是因为内联块不再被允许。在这个小例子中,我加载一个模板并尝试渲染它。然后我得到错误:如何在清单版本2中使用带Backbone.js的Chrome扩展模板
未捕获错误:从字符串不允许的代码生成此上下文。
我也试过用Handlebars.js和一个模板直接进入我的html文件。它在一个正常的浏览器窗口中工作。但它不会作为Chrome扩展。
因此,如何能我用Backbone.js的模板,在Chrome扩展与manifest_version 2?
以下划线(不工作):
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, {}))
与车把(不工作):
<!-- 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>
在我看来:index.html中
模板
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()))
但那就意味着,我不能如从服务器获取集合的数据,然后在运行时动态构建集合的视图?编辑:好的,现在我明白了。 =) – DerMambo