1

我的问题主要是关于 Backbone.js 的概念性问题,但如果我的问题不清楚,我可以模拟一些代码。

考虑我在网站上有 2 个部分的情况。项目列表作为一个视图和另一个视图,该视图具有一个下拉菜单来选择项目列表的排序方式。显然,项目列表与存储填充列表的实际数据的模型集合相关联。但是我不确定当另一个视图的下拉列表更改时触发集合以不同方式排序的最佳方法。我应该更改集合的实际顺序,还是按照我想要的视图顺序呈现视图?

另外,使用下拉列表的模型来跟踪下拉列表的状态并将项目列表视图绑定到该模型是一个好主意,以便我知道何时重新呈现项目列表?

4

1 回答 1

2

你可以在这里走几条路。这里有几个:

  1. 使用路由器。路由器将保存您的视图,或者至少是顶级视图(更清晰),并且您的下拉视图将触发路由更改,这会将信息传递给视图。如果您想要干净的 URL,最好。
  2. 在下拉视图中创建指向列表视图的指针。当下拉视图接收到更改事件时,它会明确告诉列表视图进行更新。(IMO 是一种糟糕的方法,但为了完整起见,在此列出。)
  3. 用模型支持一切。(就像您在上一个问题中建议的那样。)下拉视图将由模型支持,列表视图可以绑定到该模型的事件。(同样,列表视图仍然需要了解下拉模型——并不理想。)
  4. 做一个活动经理。当您的下拉菜单收到更改时,您trigger 'sort'和任何关心的人都可以收听该事件。这不是一个简单的解决方案,但也不是过于复杂。然后,您的列表视图可以使用事件管理器注册其侦听事件的意图sort,从而将事件管理器内部的实际视图抽象出来并远离下拉视图。

1 和 4 实际上是同一件事,只是取决于您是否需要路由器。

基本上,我对这类场景的启发是“对于不需要知道的事情,什么都不应该知道”。应用在这里,这意味着你的观点不应该相互了解。

于 2012-04-18T23:09:40.270 回答