Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 下划线模板引发变量未定义错误_Javascript_Backbone.js_Underscore.js_Underscore.js Templating - Fatal编程技术网

Javascript 下划线模板引发变量未定义错误

Javascript 下划线模板引发变量未定义错误,javascript,backbone.js,underscore.js,underscore.js-templating,Javascript,Backbone.js,Underscore.js,Underscore.js Templating,我看了一些关于主干js的视频。这是一个直接来自视频的示例。这是从2012年开始的,所以我认为主干规则/库已经发生了变化,但我不明白为什么现在不起作用。在视频中,该人显示它在JS小提琴中运行,但我无法让它工作。(我在JS Fiddle中包含了必要的库,即下划线、主干和jQuery) var V=Backbone.View.extend({ el:“身体”, 渲染:函数(){ var数据={lat:-27,lon:153}; 这个.el.html(u.template('',data)); 归还这

我看了一些关于主干js的视频。这是一个直接来自视频的示例。这是从2012年开始的,所以我认为主干规则/库已经发生了变化,但我不明白为什么现在不起作用。在视频中,该人显示它在JS小提琴中运行,但我无法让它工作。(我在JS Fiddle中包含了必要的库,即下划线、主干和jQuery)

var V=Backbone.View.extend({
el:“身体”,
渲染:函数(){
var数据={lat:-27,lon:153};
这个.el.html(u.template('',data));
归还这个;
}
});
var v=新的v();
v、 render()

您过去可以一次解析和填充下划线模板,如下所示:

var html = _.template(template_string, data);
但在下划线1.7.0中,的第二个参数包含模板选项:

模板
模板(templateString,[settings])

将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);
在您的情况下,它看起来是这样的:

var html = _.template(template_string, data);
var V=Backbone.View.extend({
el:“身体”,
渲染:函数(){
var数据={lat:-27,lon:153};
var tmpl=389;.template(“”);
这个.$el.html(tmpl(data));
归还这个;
}
});
var v=新的v();
v、 render()

这可能很有用

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();
var V=Backbone.View.extend({
el:“身体”,
温度:功能(str){
//可重用代码
返回模板(str);
},
渲染:函数(){
var数据={lat:-27,lon:153};
//调用视图方法temp
var tmpl=该温度(“”);
这个.$el.html(tmpl(data));
归还这个;
}
});
var v=新的v();
v、 render();