如何使用backbonejs在单个视图中处理多个视图

时间:2012-06-26 18:07:37

标签: backbone.js

我是Backbone的新手,我还没有完全理解它,而且我遇到了一个我找不到任何文档的情况。如果我有一个包含多个视图的视图,我会怎样?例如,我有一个名为StackView的视图。这种观点的目的是整齐地摆放一套牌。它管理添加,删除和调整堆栈中的卡片的动画。每张卡都是CardView。我该怎么处理?我已经看到人们通过在视图中简单地创建变量并将View实例分配给该变量来讨论视图中的视图。我应该在CardView的变量中添加StackView个数组吗?

1 个答案:

答案 0 :(得分:1)

这就是我所做的,而且效果很好。这是我在应用程序中使用的View的片段。我已经将它重新写回了我的coffeescript中的常规javascript,所以我为任何拼写错误道歉:

render: function() {
  var _this = this;
  this.$el.html(this.template());

  this.listItemViews = [];

  // for each model in the collection, create a new sub-view and add
  // it to the parent view
  this.collection.each(function(model){
    var view = new App.Views.Projects.ListItem({model:model}); // create the new sub-view
    _this.listItemViews.push(view); // add it to the array
    _this.$('#project-table tbody').append(view.render().$el); // append its rendered element to the parent view's DOM
  });
  return this;
}

这使我的表视图可以保留对所有listItemView视图的引用。

当然,如果你这样做,你应该确保在删除父视图时正确删除这些子视图并取消绑定任何事件。