3

そのため、ember で (有限の) 無制限のビューをサポートできるようにする必要があります。

基本的にはアンケートアプリを作成しています。調査のステップ数は定義されていないため、ビュー/コントローラーの数は定義されていません。ステップの数は、サーバーからコンテンツとハンドルバーのテンプレートと共に取得されます (ステップで可能なコンテンツの種類は限られています)。調査をさまざまな調査に拡張できる何らかの方法が必要です。 . したがって、基本的に 1 つの ember アプリがすべてを処理します。コンテンツ タイプをレンダリングするためのコードを抽象化して、ember ステップでは問題にならないようにすることができました。今は、無制限の数のステップをサポートするようにする必要があります。

Ember ビューとコントローラーを持つことは可能ですが、それらを名前で参照する代わりに、配列インデックスで参照しますか? 通常と同じように、App.TestView = … と router.get('applicationController').connectOutlet('test') を実行しますが、App.AllView[0] = Ember.View.extend(); を使用できますか? および router.get('applicationController').connectOutlet('test')[0] または何か?次に、コンテンツ タイプとステップ数を含む調査データを取得する for ループを最初に作成し、それをビュー配列にプラグインします。

これを達成する他の方法があるかもしれないので、どんな解決策も素晴らしいでしょう。新しい ember アプリを作成することはできません。調査オブジェクトとして渡されるものは何でも、同じアプリでサービスする必要があります。

4

1 に答える 1

5

さまざまなステップを含むビュークラスの配列を作成できます。ハンドルバーのテンプレート名を使用して、配列に新しいビューを追加できます。

App.surveyViews = [];
App.surveyControllers = [];
App.surveyViews['firstStep'] = Em.View.extend({ templateName: 'my-handlebars-template' });
App.surveyControllers['firstStep'] = Em.Controller.extend();

ルートはルートからのステップを取り、それを使用して、connectOutletに使用する適切なビュークラスとコントローラーを検索できます。

step: Em.Route.extend({
    route: '/:step',
    connectOutlets: function(router, context) {
        router.get('applicationController').connectOutlet({ 
            viewClass: App.surveyViews[context.step], 
            controller: App.surveyControllers[context.step].create(),
            context: {}
        });
    }
})

コンテキストなどに必要なロジックを追加できますが、それが基本的な考え方です。

于 2012-12-06T13:00:30.340 に答える