下划线,不能调用undefined替换

时间:2013-02-02 21:37:38

标签: backbone.js

之前我遇到过这个错误,并尝试过我在SO上找到的解决方案,但是在这种情况下,通过尝试我找到的解决方案,我无法绕过它。我有一个question_template,我放在我的索引文件的标题中,文件底部有js脚本标记。在视图的初始化程序中,我使用jQuery html函数获取模板,控制台日志显示从index.html检索模板。但是,当我尝试将其插入下划线_.template时,它触发了无法调用未定义错误的替换

 var QuestionView = Backbone.View.extend({
el: $(".east"), 
initialize: function(){


    var template = $('#question_template').html();
    console.log(template);
    this.template = _.template(template);   #error triggered


},

由于我能够记录模板,我看不出我的问题是什么?这是下划线代码的一部分。

text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {
source += text.slice(index, offset)
.replace(escaper, function(match) { return '\\' + escapes[match]; });

第一个问题:“文本”代表什么,在我的情况下,未定义?我原以为'text'是模板,但是因为我可以记录我的模板,它是如何定义的?

我也把所有的js代码(包括问题视图的初始化)包装在文件准备好了,这在其他SO问题上就这个问题是解决方案

$(function() {


  ...code ommitted...
  var question_view   = new QuestionView({ model: game});



});

第二个问题:我还有什么可以尝试的吗

更新 注意,我随后将模型数据传递给模板,但它永远不会那么远,因为错误被触发

**$(this.el).html(this.template(response));** 

我分三步准备模板

1. var template = $('#question_template').html();
        console.log(template);
2.      this.template = _.template(template);

3. $(this.el).html(this.template(response)); 

1 个答案:

答案 0 :(得分:0)

您应该将模型数据传递给模板

this.template = _.template(template,this.model.toJSON());