2017-10-20 3 views
0

私はルート、そのテンプレート、モデルを動的に定義する方法を設定しようとしています。 (エンバー2.16.0)EmberJS 2ダイナミックルーティング

これまでのところ、私はこれがあります。

// app/router.js 
Router.map(function() { 

    let routes = [ 
     {route: "page_one", templateName: "default.hbs"}, 
     {route: "page_two", templateName: "default.hbs"}, 
     {route: "page_three", templateName: "custom.hbs"} 
    ]; 

    routes.forEach(function (key) { 
     this.route(key.route); 
    }, this); 
}); 

をこれが動作し、そのテンプレートファイルが存在する場合は、私がページを読み込むことができます。

私はこのステップをさらに進め、ここでテンプレート名を定義したいと思います。たとえば、すべてのモデルで「default.hbs」を使用してモデルを動的にロードすることができます。

EmberJSではこれが可能ですか?もしそうなら、どんなドキュメンテーションを見なければならないのですか?

対応するルートファイル "app/routes/page_one.js"にテンプレートを指定できますが、これは動的ではありません。

+0

一般的には、デフォルトのEmberのアプローチを使用する方が簡単です。ここで何を達成するために取り組んでいますか? – acorncom

+0

CMSのページのようにカスタマイズできるように、経路とテンプレートを動的に定義したいと考えています。したがって、CMS経由で追加されるまでの経路は不明です。 Emberは単にそのために作られていないのですか? – ayala

答えて

1

デフォルトでは、ルーティングとテンプレートに対するEmberのアプローチは、バックエンドから来るデータのレイアウトを処理する組み込みのテンプレートを使用することです。

//アプリ/ router.js

Router.map(function() { 
    this.route('page', { path: '/:post_id' }); 
}); 

行う上で、あなたはあなたのpageルートを設定することができるようになる。しかし、このような何かをして、CMSのページが/page/:slugで表示された状態で終わる完全に可能ですCMSから適切なデータを取得し、page.hbsに表示します(追加のHTMLで囲み、Emberでうまく動作するようにするオプション付き)。

ここに、Emberアドオンの1つの例があります。 https://github.com/oskarrough/ember-wordpressそれはまた、あなたがここで勉強することができますWordpressのバックエンドに対して動作するように設計された作業テストアプリを持っていますhttps://github.com/oskarrough/ember-wordpress/tree/master/tests/dummy

ありますが同様に取ることができる他の方法がありますが、これはおそらく最も簡単なものです。それは役に立ちますか?

関連する問題