コード
新しいルータでバージョン4fcdbf2560を使用しています。アプリケーションテンプレートを新しいルータで再レンダリングするにはどうすればよいですか?
私のアプリケーションでは、ユーザーは認証されていてもいなくてもかまいません。レンダリングされたテンプレートは、認証ステートによって異なります。
私はApplicationRoute
に機能renderTemplate
を再定義することによって、これを管理してきました:
App.ApplicationRoute = Ember.Route.extend({
renderTemplate: function() {
this.render(App.authenticated() ? 'authenticated' : 'unauthenticated');
}
});
私のルーターは非常に簡単です:
App.Router.map(function(match) {
match('/').to('index');
match('/sign').to('sign', function(match) {
match('/in').to('signIn');
});
match('/dashboard').to('dashboard');
});
IndexRoute
はに応じて、ユーザーをリダイレクトするだけでここにあります認証状態:
App.IndexRoute = Ember.Route.extend({
redirect: function() {
this.transitionTo(App.authenticated() ? 'dashboard' : 'signIn');
}
});
ワークフローは、
- ユーザは、ユーザが認証されていないとして、ユーザが認証されないように、
unauthenticated
テンプレートは、 IndexRoute
が入力されてレンダリングされ、入力され/
ApplicationRoute
- にナビゲートリダイレクトが
signIn
signIn
テンプレートが親テンプレートにレンダリングさに作られて - >unauthenticated
テンプレート- U >
unauthenticated
テンプレート
質問私の実装で間違って何
- - SER記号が正常で、
route.transitionTo('dashboard')
はdashboard
テンプレートが親テンプレートにレンダリングされる - 呼ばれているのですか?
dashboard
テンプレートがレンダリングされたときに、renderTemplate
関数が呼び出されないのはなぜですか?- アプリケーションにテンプレートの再レンダリングを強制するにはどうすればよいですか?
編集2013年1月7日
私はエヴァンの答えに応じて私のコードを変更しました。
私のアプリケーションテンプレートは次のようになります。彼は認証されていないとして、ユーザは、アプリケーション・ページに着地すると
{{#if isAuthenticated}}
<h1>Authenticated</h1>
{{outlet}}
{{else}}
<h1>Unauthenticated</h1>
{{outlet}}
{{/if}}
、それがレンダリングされ、認証されていないブロックです。 {{outlet}}
タグには何も表示されない点を除き、すべて正常に動作しています...
しかし、私のアプリケーションテンプレートは、この(=条件タグなし)のようになります。
<h1>Unauthenticated</h1>
{{outlet}}
...それは働きます!ですから、{{outlet}}
タグを条件タグの間に挿入できるかどうか疑問です。
を:;) –