我正在构建一个应用程序,前端使用 Backbone /RequireJs,后端使用节点/express。全部用 CoffeeScript 编写。我无法正确加载 HTML 模板文件和文本!插件。
我的配置如下:
require.config
paths:
app: 'app'
jquery: 'libs/jquery-1.7.1'
jqueryTmpl: 'libs/jquery.tmpl'
jqueryUI: 'libs/jquery-ui-1.8.18.custom.min'
underscore: 'libs/underscore.amd'
order: 'libs/order'
backbone: 'libs/backbone.amd'
handlebars: 'libs/handlebars'
bootstrap: 'libs/bootstrap/js/bootstrap'
marionette: 'libs/backbone.marionette'
modelbinding: 'libs/backbone.modelbinding'
validation: 'libs/backbone.validation'
jqueryQtip: 'libs/jquery.qtip'
utils: 'utils'
jqueryDatatables: 'libs/datatables/jquery.dataTables'
DT_bootstrap: 'libs/datatables/DT_bootstrap'
user_maintenance: 'templates/tmpl.user.maintenance'
require [
"require",
"jquery",
"underscore",
"backbone",
"order!jqueryTmpl",
"order!marionette",
"order!validation",
"app"
]
这是我的观点之一的开始:-
define (require) ->
Backbone = require 'backbone'
Backbone.ModelBinding = require 'modelbinding'
require 'jqueryUI'
require 'jqueryQtip'
require '../../scripts/text!user_maintenance.html'
Utils = require '../../scripts/Utils.js'
class UserMaintenanceView extends Backbone.Marionette.ItemView
template: "#tmpl-user-maintenance"
className: "row"
.
.
.
如果我查看 Chrome 开发者工具中的网络选项卡,就会发现 /scripts/templates/tmpl.user.maintenance.html
文件已通过 GET
加载。单击它会显示如下所示的内容。 (为了简洁起见,我删除了内容,它只是 HTML)
<script type="text/x-jquery-tmpl" id="tmpl-user-maintenance">
</script>
我没有收到任何脚本错误,但模板没有出现在 DOM 中,并且我的 View 没有呈现。如果我只是将 HTML 模板粘贴到主 HTML 文件中并且不尝试使用文本插件加载,一切都会正常工作。但我想将我的模板分成单独的文件。
知道我做错了什么吗?
最佳答案
text!plugin 不会将文本注入(inject)到 DOM 中,它只加载给定的文件,并且由您来处理内容。请参阅http://requirejs.org/docs/api.html#text了解更多信息。
关于backbone.js - RequireJs 文本插件似乎没有将模板加载到 DOM 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9888520/