Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.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,我正在尝试使用下划线模板渲染基本主干视图,但在尝试渲染模板时,我不断遇到以下错误 未捕获参考错误:未定义金额 以下是JSFIDLE: HTML JS DumbViewObj=Backbone.View.extend({ el:$('msg con'), 初始化:函数(){ 这个。render(); }, render:function(){ var-template=u.template('I am dumb',{amount:'200'}); 此.$el.append(模板); }, })

我正在尝试使用下划线模板渲染基本主干视图,但在尝试渲染模板时,我不断遇到以下错误

未捕获参考错误:未定义金额

以下是JSFIDLE:

HTML


JS

DumbViewObj=Backbone.View.extend({
el:$('msg con'),
初始化:函数(){
这个。render();
},
render:function(){
var-template=u.template('I am dumb',{amount:'200'});
此.$el.append(模板);
},
});
var dumb=new DumbViewObj();

我确信解决方案非常简单,但我无法理解它,因为模板是一个函数,模板(obj)返回您要查找的字符串,而在您调用它后它不会返回字符串

你的代码在做什么

var xxx = template();
this.$el.append(xxx);
你应该做什么

render: function(){
    var template = _.template($('#dumb').html());
    var vars = {amount:200};
    var html = template(vars);
    this.$el.append(html);
},
将模板编译为函数。必须将参数传递给要计算的结果函数:

    var template = _.template('I am <%= amount %> dumb');
    this.$el.append(template({amount:'200'}));
var-template=u.template('I am dumb');
这个.el.append(模板({amount:'200'}));
在一行中:

this.$el.append(_.template('I am <%= amount %> dumb')({amount:200}))
this.$el.append(u.template('I am dumb')({amount:200}))

一切似乎都很好,使用了完全相同的代码@aktiv coder:您使用的是旧版本的下划线,
.tempate(template\u string,template\u data)
表单不再受支持。Bergi的答案是当场-@aktiv coder抱歉,我没有足够的信誉点发表评论。您的代码段正在工作,因为您使用的是旧版本的下划线。尝试改用1.7。对于较旧的下划线版本,这似乎是一个过时的解决方案
    var template = _.template('I am <%= amount %> dumb');
    this.$el.append(template({amount:'200'}));
this.$el.append(_.template('I am <%= amount %> dumb')({amount:200}))