在Backbone Boilerplate fetchTemplate函数中使用下划线变量

时间:2012-02-14 03:50:27

标签: backbone.js underscore.js

我正在使用Backbone Boilerplate构建应用程序,并且在使下划线模板变量起作用时遇到一些麻烦。我有一个名为Goal的资源。我的目标视图的渲染功能如下所示:

render: function(done) {
  var view = this;

  namespace.fetchTemplate(this.template, function(tmpl) {
    view.el.innerHTML = tmpl();
    done(view.el);
  });
}

我在另一个视图中调用它,就像这样:

var Goal = namespace.module("goal"); 

App.View = Backbone.View.extend({

  addGoal: function(done) {

    var view = new Goal.Views.GoalList({model: Goal.Model});

    view.render(function(el) {
      $('#goal-list').append(el);
    });
  }
});

我正在使用本地存储来保存我的数据,并且它被添加得很好。我可以在浏览器中看到它,但出于某种原因,当我加载应用程序并尝试获取现有数据时,我收到此错误:

ReferenceError: Can't find variable: title

标题是我存储的唯一键。这是调用的直接结果:

tmpl();

非常感谢任何想法。

2 个答案:

答案 0 :(得分:2)

您的模板正在寻找变量title,可能就像这个<%- title %>一样。你需要传递一个像tmpl({ title: 'Some title' })

这样的对象

答案 1 :(得分:0)

事实证明,当我创建视图时,我没有传入模型,这使得无法获取模型数据。一旦我正确地传递了模型,我就可以将数据传递给tmpl,正如@abraham所说的那样。

render: function(done) {
    var 
    view = this,
    data = this.model.toJSON(); 

    clam.fetchTemplate(this.template, function(tmpl) {

    view.el.innerHTML = tmpl(data);

    done(view.el);
    });
},