我想知道当用户点击/选择其中一个项目时,处理项目列表和显示项目详细信息的最佳方法是什么。这方面的一个示例是在左侧边栏中显示电子邮件列表,并在用户单击其中一条消息时显示主要内容区域中的消息详细信息。
在how to mark active menu item using router infrastructure上使用@ pangrantz的精彩答案我能够提出一个有效的例子:jsFiddle
但是有一些事情看起来不太正确:
首先,在路由器#connectOutlets
状态的show
中,我在控制器上设置所选消息,并将插座与同一对象连接。我想我可以做其中一个。
connectOutlets: function(router, context) {
router.set('messagesController.selected', context);
router.get('applicationController').connectOutlet('message-details', 'messageDetails', context);
}
其次,我正在从index
和show
状态转换到相同的状态。我甚至不确定我是否想要过渡到一个新的州 - 我只是想把它连接起来。
showDetails: Ember.Route.transitionTo('show')
我可以更改任何内容以使此代码更具惯用语吗?谢谢!
答案 0 :(得分:0)
这段代码看起来非常惯用于我的眼睛。你是对的,你不需要设置所选的消息。当您连接插座以获取消息详细信息时,它会将所选消息设置为消息详细信息控制器上的内容。
您应该IMO从索引转换为show状态,因为这是一个很好的RESTful练习,并且还允许用户为单个消息添加书签。我会将索引状态的URL设为'/ messages'而不是'/'。