【问题标题】:using underscore variables with Backbone Boilerplate fetchTemplate function使用带有 Backbone Boilerplate fetchTemplate 函数的下划线变量
【发布时间】:2012-02-14 03:50:27
【问题描述】:

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

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

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

tmpl();

非常感谢任何想法。

【问题讨论】:

  • 代码中的某处必须有一个变量title。是否没有与错误消息关联的行号?

标签: backbone.js underscore.js


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    事实证明,我在创建视图时没有传入模型,这使得无法获取模型数据。一旦我正确地传递了模型,我就可以将数据传递给 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);
        });
    },
    

    【讨论】:

      猜你喜欢
      • 2017-04-26
      • 2023-03-19
      • 2014-06-09
      • 2011-10-19
      • 2019-12-04
      • 2019-10-26
      相关资源
      最近更新 更多