我正在使用Backbone和Underscore来创建一个小型测试站点。
我正按照建议的here和here将我的所有html模板文件编译成一个JST javascript文件。
然而,如何将其与模板文件一起使用并不是很明显。我试过这个:
App.HeaderView = Backbone.View.extend({
el: '#headerContent',
template: JST['header.html'](),
//template: window["JST"]["header.html"],
//template: _.template("<h1>Some text</h1>"),
initialize: function () {
this.render();
},
render: function() {
//var html = this.template();
//// Append the result to the view's element.
//$(this.el).append(html);
this.$el.html(this.template());
return this; // enable chained calls
}
});
我得到的错误是JST.header.html不是函数。
(最终注释掉的位按照template: _.template("<h1>Some text</h1>")
的方式工作,所以我知道问题不在于其他任何内容。
这可能是因为我使用的是browserify(所以尝试'要求'文件),但我尝试了几种不同的“包括”模板文件的方法,包括直接添加它:
<script src="templates/_templates.js"></script>
<script src="js/functions.js"></script>
</body>
</html>
任何想法需要做些什么才能让它发挥作用?
答案 0 :(得分:1)
在第3行,你不想调用模板,而只是使用:
template: JST['header.html']
。
目前您正在设置模板以等于函数的返回值,然后尝试调用该返回值而不是实际函数,因此它提升了一个&#34;不是函数&#34;错误。