我首先从骨架.js开始使用骨干模板创建我的第一个项目。

我有一个名为Navitem的模块,其视图名为Sidebar

Navitem.Views.Sidebar = Navitem.Views.Layout.extend({
    template: "navitem/sidebar",
    tagName: 'ul',
    beforeRender: function()
    {
      var me = this;
      this.options.navitems.each(function(navitem)
      {
        //insertView from Layout datatype
        me.$el.append(new Navitem.Views.Item({
          model: navitem //select the 'ul' in sidebar view and append an Item with model navitem
        }).render().el);
      });
      return this;
    }
  });


构造侧边栏时,会将包含许多Navitem.Model的集合传递给它。调试后,model:navitem似乎正常工作,并将正确的navitem模型传递给new Navitem.Views.Item({...})。该类看起来像:

Navitem.Views.Item = Navitem.Views.Layout.extend({
    tagName: 'li',
    template: 'navitem/default'
    events: {
      click: "navRoute"
    },
    navRoute : function()
    {
      app.router.go(this.model.get('target'));
      return this;
    }
  });


模板看起来像<a href="#"><%= model.get('label') %></a>

由于某种原因,当我在第一个代码块中调用Item.render()时,它会发出model在视图中未定义的提示。我似乎无法弄清楚为什么会这样。有什么想法吗?

最佳答案

可能与此处回答的内容有关:Backbone.js: Template variable in element attribute doesn't work

您需要将模型作为纯JSON传递到模板(除非您正在使用其他版本?)

希望这可以帮助!

关于javascript - Backbone.js模型未传递到 View ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14300884/

10-11 13:40