Backbone.js无法渲染

时间:2012-05-16 04:25:24

标签: backbone.js

由于某些原因,我的收藏品无法呈现。无法找出原因。

TreeItem = Backbone.Model.extend({

});

TreeList = Backbone.Collection.extend({
  model: TreeItem,
  url: "/get_tree_list"
});

window.tree_list = new TreeList();

// VIEW

window.TreeItemView = Backbone.View.extend({
  tagName: 'li',
  initialize: function(){
    _.bindAll(this, 'render');
  },
  render: function(){
    $(this.el).html('<span>'+this.model.get('title')+'</span>');
    return this;
  }
});

window.TreeListView = Backbone.View.extend({
  el: "#tree-structure",
  events: {

  },
  initialize: function() {
    _.bindAll(this, 'appendItem', 'render');
    tree_list.bind('add', this.appendItem);
    tree_list.fetch();
    this.render();
  },
  render: function() {
    tree_list.each(this.appendItem);
    return this;
  },
  appendItem: function(item){
    var tree_item_view = new TreeItemView({
      model: item
    });
    $(this.el).append(tree_item_view.render().el);

  }
});

var tree_list_view = new TreeListView;

1 个答案:

答案 0 :(得分:2)

Backbone.js提供了许多解释,这是人们新出错的地方。你的错误本质上是根本的。您将View直接绑定到模型

  • 请参阅初始化函数,其中呈现了一个集合实例!!

  • 随时随地创建模型,集合然后作为参数传递给视图的构造函数。检查我的小提琴

  • 永远不要在模型,视图或集合中调用渲染。它们必须位于应用程序文件

的jsfiddle

http://jsfiddle.net/35QGM/