Backbone:如何设置正确的容器并处理更改

时间:2012-08-29 12:09:00

标签: javascript backbone.js

Backbone没有关于如何构建应用程序的任何明确模式。我现在遇到了一些困难。在下图中,我以视觉和简化的方式描述了我想要得到的东西。

我有一份任务清单。我希望在碰巧具有相同截止日期的任务之后列出截止日期。日期也按时间顺序排列。

我决定采取的一种方法是:

  • 日期的集合和每个日期的视图
  • 每个任务的任务集合和子视图(父视图是日期视图)

在您看来,这是一个很好的解决问题的方法吗?

保持最新的潜在问题:

  • 如果我更改日期,我希望日期容器重新定位,以便按时间顺序排列(重新获取所有日期集合?
  • 如果我更改任务的截止日期,我希望任务移动到正确的日期容器(删除其视图并重新获取所有任务集合?
  • 如果其他用户更改了某项任务,我希望它能够被反映出来(是否需要提取相应的内容?

enter image description here

1 个答案:

答案 0 :(得分:2)

  

这是解决问题的好方法吗?

是的!:CollectionView - > (n)ModelViews(尽可能深)

  

如果我更改日期,我希望日期容器重新定位,以便按时间顺序排列(重新获取所有日期集合?)

您始终必须将更改发送到服务器,但您不需要重新获取任何内容,您已经掌握了数据,您只需重新呈现。重新渲染的优化取决于很多细节。

  

如果我更改任务的截止日期,我希望任务移动到正确的日期容器(删除其视图并重新获取所有任务集合?)

您再次无需索取数据。只需从实际的DateContainer集合中删除已更改的Task,并将其添加到新DateContainer的集合中。使DateContainers响应此add/remove事件。

  

如果另一个用户更改了一个任务,我希望它被反映出来(获取相应的东西吗?)

嗯,这是一个非常开放的问题。正如您所说,您可以每X秒重新获取整个数据。或者,您可以在API中实施优化的updated_elements请求,并在每X秒内请求一次。或者你可以通过WebSockets方式。