backbone.js 下划线模板引发未定义变量错误

zbsbpyhn  于 2022-11-10  发布在  其他
关注(0)|答案(2)|浏览(122)

我看过一些关于backbone js的视频。这是一个直接从视频中得到的例子。它是2012年的,所以我认为backbone规则/库已经改变了,但是我不明白为什么现在它不工作。在视频中,这个人显示它在JS Fiddle中运行,但是我不能让它工作。(我已经在JS Fiddle中包含了必要的库,即下划线、 Backbone.js 和jQuery)
第一个

vktxenjb

vktxenjb1#

您过去可以像这样一次解析并填充Underscore模板:

var html = _.template(template_string, data);

但从Underscore 1.7.0开始,_.template的第二个参数包含模板选项:

模板

将JavaScript模板编译为可用于呈现的函数。[...]settings参数应该是包含任何应被覆盖的_.templateSettings的哈希值。
您必须使用_.template编译模板,然后执行返回的函数以获得填充的模板:

var tmpl = _.template(template_string);
var html = tmpl(data);

// or as a one-liner, note where all the parentheses are
var html = _.template(template_string)(data);

在您的情况下,它看起来像这样:
第一个

jpfvwuh4

jpfvwuh42#

这可能很有用
1:如果你有多个模板,或者有时你使用外部模板,这样它对你在方法内部很有用,你可以编写可重用的代码

var V = Backbone.View.extend({
    el:'body',
    temp: function (str) {

        // reusable code
        return _.template(str);
    },
    render: function () {
        var data = { lat: -27, lon: 153 };

        // calling your view method temp        
        var tmpl = this.temp('<%= lat %> <%= lon %>');
        this.$el.html(tmpl(data));

        return this;
    }
});

var v = new V();
v.render();

相关问题