2

アイテムのリストを処理し、ユーザーがアイテムの1つをクリック/選択したときにアイテムの詳細を表示するのが最善の方法だと思います。この例としては、左側のサイドバーに電子メールメッセージのリストを表示し、ユーザーがメッセージの1つをクリックしたときにメインコンテンツ領域にメッセージの詳細を表示する場合があります。

ルーターインフラストラクチャを使用してアクティブなメニュー項目をマークする方法に関する@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')

このコードをより慣用的にするために変更できるものはありますか?ありがとう!

4

1 に答える 1

0

このコードは、私の目にはかなり慣用的に見えます。そうです、選択したメッセージを設定する必要はありません。メッセージ詳細のアウトレットを接続すると、選択したメッセージがメッセージ詳細コントローラーのコンテンツとして設定されます。

これは優れた RESTful プラクティスであり、ユーザーが個々のメッセージをブックマークすることもできるため、IMO はインデックスから表示状態に移行する必要があります。インデックス状態への URL を「/」ではなく「/messages」にします。

于 2012-09-06T16:10:20.603 に答える