4

我是 Backbone 的新手,我还没有完全理解它,而且我遇到了一种我找不到任何文档的情况。如果我有一个包含多个视图的视图怎么办?例如,我有一个名为StackView. 此视图的目的是整齐地布置一组卡片。它管理在堆栈中添加、移除和调整卡片的动画。每张卡都是一个CardView。我将如何处理?我见过人们通过简单地在视图中创建一个变量并将 View 实例分配给该变量来谈论视图中的视图。我应该只是CardView在 a 的变量中添加一个 s数组StackView吗?

4

1 回答 1

1

这就是我所做的,而且效果很好。这是我在应用程序中使用的视图片段。我已经从我的咖啡脚本将它重新写回了常规的 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

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

于 2012-06-26T18:30:35.800 回答