2

他の 2 つのテンプレートdashboard/panelOneとをレンダリングするテンプレートがありdashboard/panelTwoます。各テンプレートをレンダリングしますが、データがコントローラーにバインドされることはありません。renderTemplate がこれを行うためのルートをスキップしていると想定しています。「パネル 1 に移動」または「パネル 2 に移動」のいずれかのリンクをクリックして戻るボタンを押すと、ダッシュボードにデータが入力されていることがわかります。

私はマスターからEmberJSを使用しています:

バージョン: v1.0.0-pre.2-396-gddb0951

最後のコミット: ddb0951 (2013-01-14 10:16:46 -0800)

パネルのコントローラーにデータを取得してデータを入力し、最初に各パネルに移動することなくダッシュボードに表示するにはどうすればよいですか?

これが私の作品の JSFiddle です。

4

2 に答える 2

3

問題は、コントローラーを生成するためにパネルルートに依存していることです。ただし、このコントローラーは遅延して作成され、コンテンツは関数を介してパネルルート内からのみ設定されますmodel。代わりに、コントローラーを宣言し、事前にコントローラーのコンテンツを設定する必要があります。http://jsfiddle.net/yrsGu/49/を参照してください

于 2013-01-15T22:38:27.500 に答える
0

これまでのところ、私が思っているように機能するソリューションは見つかりませんでした。パネルのコントローラーとルートを作成しないようにするために、ルート定義を保持する必要がありました。次に、DashboardIndexRouteでrenderTemplatesを定義する場所で、次のように定義します。

this.render('dashboard/panelOne', {
    into: 'dashboard.index',
    outlet: 'panelOne',
    controller: this.controllerFor('dashboard/panelOne', App.Sites.find())
});

これにより、コントローラーが作成され、モデルが挿入されます。また、これにより、テンプレートが使用するモデルを定義できます。したがって、同じようにテンプレートを増やして(テンプレートが好きなので)、パネルテンプレートを再利用したいが、別のモデルを使用したい場合は、これが可能になります。

ピーターの答えの場合。パネルが呼び出されるたびにモデルが同じになることを前提としています。これは場合によっては機能する可能性があり、モデルが同じでパネルが複数の場所で再利用されている場合は、より適切に機能します。

こちらが最新のJSFiddleです。

他の誰かが別の解決策を持っているかどうかを確認するために、今のところ質問を開いたままにしておきます。

于 2013-01-16T00:15:34.717 に答える