0

私は ember が初めてで、問題に遭遇し、オンラインで答えを見つけることができませんでした。

コレクションビューがあります

App.MyView = Ember.CollectionView.extend({
    itemViewClass: 'App.MyViewItem',
    contentBinding: 'controller'
});

およびitemViewClass

App.MyViewItem = Ember.View.extend({
    templateName: 'mytemplate'
});

テンプレートは次のようになります。

<div {{action 'select' view.content}}>{{view.content.name}}</div>
        {{outlet detail}}
</div>

これにより、コンテンツ リストが正常に生成されます。

コントローラーには、次のアクションがあります。

select: function(evt){
            this.transitionToRoute('item', evt);
        }

私がやりたいことは、アイテムを選択するときにネストされたルートに遷移し (正常に動作します)、選択したアイテムのデータを {{アウトレットの詳細}} にさらにロードすることです。"item" ルートのコンテンツを application.hbs などのアウトレットにロードすることはできますが、選択した collectionView アイテムのアウトレットを参照して、詳細なコンテンツが既存のビュー内に表示されるようにする方法がわかりません。

私は使用しようとしました:

this.render('item', {
            outlet: 'detail',
            into: '????'
        });

アイテムRoute内にあるのですが、collectionviewアイテムテンプレートの参照方法がわかりません。

おそらく、アイテムのビューでアイテムからより多くのデータをロードするためのはるかに簡単な方法もあります (同時にルートを変更しながら)。どんな助けでも大歓迎です。

4

2 に答える 2

0

「item.details」に移行して、名前付きアウトレットを削除し、アウトレットに変更して、リソースの下にルートを追加してみませんか。

次に、Ember は何をどこにレンダリングするかを決定するという大変な作業を行います。名前付きアウトレットは、存在しない可能性のあるコンポーネントの場合、少し複雑に思えます (まったく機能する場合)。

補足として、into パラメータを除外したり、into: 'mytemplate' と言ったりしましたか?

于 2013-10-19T03:22:30.113 に答える
0

ここで本当にやりたいことは、Ember.CollectionView を使用するのではなく、ルーターに MyItems 用のリソースを用意し、App.MyItemsIndexRoute と App.MyItemsRoute の 2 つのルートを用意することです。

ルーター、ルート、コントローラー、およびテンプレートを設定する方法を示す要点を次に示します。

https://gist.github.com/anonymous/7051432

要点の例では、「アイテム」はプロジェクトです。

Ember テンプレートは非常に強力で、ビューを使用する必要はほとんどありません。ビューに関する ember ガイドを参照してください。

Ember.js のビューは通常、次の理由でのみ作成されます。

ユーザー イベントの高度な処理が必要な場合 再利用可能なコンポーネントを作成したい場合

于 2013-10-19T03:49:32.187 に答える