該代碼
我正在使用版本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');
}
});
工作流
- 用戶導航到
/
- 的
ApplicationRoute
輸入,作爲用戶沒有被認證,則unauthenticated
模板呈現 - 的
IndexRoute
輸入,作爲用戶未被認證,一個重定向到signIn
- 的
signIn
模板被渲染成其父模板製作 - >的unauthenticated
模板 - 將U SER登錄成功,
route.transitionTo('dashboard')
叫 - 的
dashboard
模板被渲染成其父模板 - >的unauthenticated
模板
的問題
- 這有什麼錯我的執行?
- 爲什麼在
dashboard
模板呈現時renderTemplate
函數未被調用? - 如何強制應用程序重新呈現其模板?
編輯2013年1月7日
我根據埃文的回答修改我的代碼。
我的應用程序模板,現在看起來是這樣的:
{{#if isAuthenticated}}
<h1>Authenticated</h1>
{{outlet}}
{{else}}
<h1>Unauthenticated</h1>
{{outlet}}
{{/if}}
當應用程序頁面上的用戶的土地,因爲他沒有通過認證,這是它呈現的未經驗證的塊。除了沒有任何東西渲染成{{outlet}}
標籤,一切都運行良好...
但是,當我的應用程序模板看起來像這樣(=沒有條件標籤):
<h1>Unauthenticated</h1>
{{outlet}}
...它的作品!所以我想知道是否可以在條件標籤之間插入{{outlet}}
標籤。
的內部塊插座:https://github.com/emberjs/ember.js/pull/1671,希望對你這個將被合併;) –