Route.connectOutlets
メソッド内でカスタムコントローラーを指定できないようです。そもそもこれが正しい実装であるとは思わないので、ビューごとに空のコントローラーを作成したくないという考えです。つまり、Gordon Hemptonの例を取り上げて、ルーターのアイテム/アイテムルートのコードを少し更新すると、
item: Ember.Route.extend({
route: '/:item_id',
connectOutlets: function(router, context) {
var item = router.getPath('itemsController.content').objectAt(context.item_id);
router.get('itemController').set('content', item);
router.get('applicationController').connectOutlet('item');
}
})
に
item: Ember.Route.extend({
route: '/:item_id',
connectOutlets: function (router, context) {
var item = router.getPath('itemsController.content').objectAt(context.item_id);
var applicationController = router.get('applicationController');
applicationController.connectOutlet({
viewClass: router.namespace.ItemView,
context: item,
controller: applicationController
});
}
})
アイテムの選択はエラーなしで機能しなくなります。コードに問題がありましたか、またはコントローラーの複数のビューを持つシナリオがサポートされていませんか?
UPD:
ItemViewテンプレートは次のとおりです。
<script type="text/x-handlebars" data-template-name="item">
<h1>{{title}}</h1>
{{{description}}}
</script>