Tôi đang cố sử dụng mẫu cho chế độ xem xương sống của mình. Tôi đã thử nó với underscore.template để làm cho nó chạy. Vấn đề là kể từ khi manifest_version 2 của phần mở rộng chrome có một số hạn chế bảo mật. Tôi nghĩ lý do là vì các khối nội tuyến không được phép nữa. Trong ví dụ nhỏ này, tôi tải một mẫu và cố gắng render nó. Sau đó tôi nhận được lỗi:Cách sử dụng Mẫu với Backbone.js cho Tiện ích mở rộng của Chrome trong Tệp kê khai Phiên bản 2
Lỗi không bắt buộc: Tạo mã từ chuỗi không được phép cho ngữ cảnh này.
Tôi đã thử nó cũng với Handlebars.js và mẫu ngay trong tệp html của tôi. Nó hoạt động trong một cửa sổ trình duyệt bình thường. Nhưng nó không phải là một phần mở rộng chrome.
Vậy làm cách nào tôi có thể sử dụng các mẫu có backbone.js trong tiện ích mở rộng của chrome với manifest_version 2?
Với gạch dưới (không hoạt động):
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, {}))
với tay lái (không hoạt động):
mẫu trong 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>
và theo quan điểm của tôi:
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()))
Nhưng điều đó có nghĩa là tôi không thể, ví dụ: tìm nạp dữ liệu cho một bộ sưu tập từ máy chủ và sau đó tự động xây dựng chế độ xem của bộ sưu tập trong thời gian chạy? Edit: Được rồi, bây giờ tôi hiểu. =) – DerMambo