0

我有一个带有 a 的应用程序Sidebar,它是它自己的模块,有自己的区域,aprimaryRegion可以显示来自其他两个模块的视图(Dashboard视图或Detail从侧边栏中选择的项目的视图)。

当在 中单击某个项目时Sidebar,它会更改其显示以表明它已被选中并显示在 中primaryRegion

我遇到的问题是,我最近向应用程序添加了路由以直接在 中显示项目详细信息,并且在直接转到给定项目primaryRegion的视图时我无法保持这种行为。Detail

鉴于只有一个模块可以响应路由,我如何在不使用全局对象或引入竞争条件的情况下Sidebar选择 URL 中指定的项目并在其中显示该项目的Detail视图?primaryRegion

为缺少代码道歉,我很难在保持清晰的同时将其减少到基本部分。希望我的描述足够好,但如果不是,请告诉我,我会提供更多细节。

4

1 回答 1

0

我可以想到两个您可以尝试的选项:

  1. 在渲染Detail时触发一个全局事件,并Sidebar监听该事件并根据从该事件获得的数据突出显示正确的项目。

  2. 或者让您Sidebar处理路由并使用可变路由来确定Detail要渲染的内容。例如,在Sidebarof中有一个路由'details/:id': showDetails',然后是一个函数,如:

-

showDetails: function(id) {
  // highlight item with id === id here

  this.primaryRegion.show(new Details(id));
}
于 2013-11-07T22:36:24.910 回答