带有Backbone和Underscore的JST

时间:2015-04-18 22:03:25

标签: backbone.js underscore.js jst

我正在使用Backbone和Underscore来创建一个小型测试站点。

我正按照建议的herehere将我的所有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>

任何想法需要做些什么才能让它发挥作用?

1 个答案:

答案 0 :(得分:1)

在第3行,你不想调用模板,而只是使用:
template: JST['header.html']

目前您正在设置模板以等于函数的返回值,然后尝试调用该返回值而不是实际函数,因此它提升了一个&#34;不是函数&#34;错误。