1

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>
4

1 に答える 1

0

関連するアイテムをコントローラーとして使用してみましたか?このようにして、未使用の空のコントローラーを作成せずに、アイテムのコンテンツを表示できるようにします。

applicationController.connectOutlet({ 
    viewClass: router.namespace.ItemView, 
    controller: item
});
于 2012-11-02T14:30:38.293 に答える