在骨干中呈现下划线模板数据时未定义的变量

时间:2014-10-20 17:06:10

标签: javascript templates backbone.js underscore.js underscore.js-templating

我正在使用带有下划线模板的主干,但是我在获取下划线以呈现我传递给模板的数据时遇到了问题。这是我的代码:

define([
  'jquery',
  'underscore',
  'backbone',
  'models/home/HomeModel',
  'text!/app/templates/home/homeTemplate.html'
], function($, _, Backbone,HomeModel,homeTemplate){

  var HomeView = Backbone.View.extend({
    el: $("#page"),

    initialize: function(){
      var self = this;
      self.model = new HomeModel();
    },

    render: function(){
      var homeTitle = this.model.get('title');
      var homeData = {
        title: homeTitle
      }

      var compiledTemplate = _.template( homeTemplate, homeData );
      this.$el.html(compiledTemplate);

    }

  });

  return HomeView;

});

在这段代码中,我可以一直到var homeData = {}对象,其中包含模型中的正确标题,但是当我创建compiledTemplate时,我收到错误,说明标题未定义。

我在这里做错了什么想法?

1 个答案:

答案 0 :(得分:2)

来自Underscore.js documentation

  

var compiled = _.template(" hello:<%= name%>");

     

编译({name:' moe'});

     

=> "你好:萌"

看起来您没有正确使用_.template方法。它返回一个编译的模板函数,您可以使用要呈现的数据调用它:

var compiledTemplate = _.template( homeTemplate, homeData );
this.$el.html( compiledTemplate( homeData ) );