即時嘗試爲我的骨幹視圖使用模板。我用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