私の現在の Ember プロジェクトでは、認証システムを導入しています。特定のページは、認証されたユーザーのみが表示できます。ユーザーが認証されているかどうかを確認し、ページへのアクセスを制御するのは簡単なので、問題はありません。
問題は、認証されたユーザーと認証されていないユーザーの両方が表示できる特定のページがあることです。認証されたユーザーには、認証されていないユーザーとは異なるナビゲーション (トップ バーとサイド バー) が表示されます (より多くのナビゲーション オプション、設定など)。ユーザーが認証されているかどうかに基づいて、使用されるレイアウトを変更したい。問題は、ビューに 1 つのレイアウトしか設定できないように見えることです。
一般的なコードは次のようなものです。
レイアウト:
<script type="text/x-handlebars" data-template-name="authenticated_layout">
//authenticated layout mark up
{{yield}}
</script>
<script type="text/x-handlebars" data-template-name="not_authenticated_layout">
//not_authenticated layout mark up
{{yield}}
</script>
記事テンプレート (記事は、認証済みユーザーまたは非認証ユーザーが表示できます):
<script type="text/x-handlebars" data-template-name="article">
//article mark up
</script>
記事の表示:
App.ArticleView = Ember.View.extend({
templateName: "article",
layoutName: //want this to be based on authentication state
//other view code
})
レイアウトごとに異なるビューを用意し、ユーザーが認証されているかどうかに基づいてビューを使用してテンプレートをレンダリングしました。私が目にする問題はArticlesView
、レイアウトを設定するだけでなく、layoutName
プロパティだけが異なる 2 つの個別のビューを使用したくないということです。
アドバイスをいただければ幸いです。