4

現在、ルーターと ConnectOutlets で CollectionView を利用しようとしています。コレクション ビュー ヘルパーを使用している場合は問題ありませんが、これは、常に connectOutlets を利用している他の実装とは対照的です。

私が基本的にしようとしているのは:

connectOutlets : function(router){
  console.log("calling connectOutlets");
  router.get("applicationController").connectOutlet({
    viewClass : App.ItemsView,
    controller : App.itemController,
    context : content
  })
}

App.ItemsView = Ember.CollectionView.extend({
  itemViewClass : App.ItemView,
});

App.ItemsView は CollectionView のサブクラスです。App.itemController は、手動でインスタンス化された ArrayController です。ここで完全なフィドルを見ることができます: http://jsfiddle.net/mavilein/qS3aN/12/

しかし、実際にはこれは機能しません。アイテムがレンダリングされていません。コレクション ヘルパーを使用すると問題なく動作しますが、ビューでバインディングを設定するのは静的すぎます。 CollectionView は connectOutlets での使用を意図していませんか?

4

1 に答える 1

4

それができるように思えますが、 で 2 つの小さな調整を行う必要がありますItemsView

App.ItemsView = Ember.CollectionView.extend({
   contentBinding: 'controller',
   itemViewClass : 'App.ItemView',
});
  • CollectionView は content プロパティに依存しているため、controller プロパティにバインドする必要があります。(このプロパティは connectOutlet 時に配線されます)

  • App.ItemViewafterを定義するItemsViewとき、Ember.js が ItemsView インスタンスの作成中に検索できるようにするために、文字列として参照する必要があります。

フィドル: http://jsfiddle.net/qS3aN/29/

于 2012-12-20T14:20:00.307 に答える