對於我的登錄/註銷情況我燼實施的條件路由:Ember:如何讓路由器和控制器一起工作?
App.Router = Ember.Router.extend({
//needs controller handling
//goLoggedIn: Ember.Route.transitionTo('loggedIn'),
goLoggedOut: Ember.Route.transitionTo('loggedOut'),
root: Ember.Route.extend({
index: Ember.Route.extend({
route: '/',
enter: function(router) {
var logged = getLoginState();
Ember.run.next(function() {
if (logged) {
router.transitionTo('loggedIn');
} else {
router.transitionTo('loggedOut');
}
});
}
}),
loggedIn: Ember.Route.extend({
connectOutlets: function(router, context){
...
}
}),
loggedOut: Ember.Route.extend({
connectOutlets: function(router, context){
...
}
})
...
我的index.html說,對的loggedIn視圖
<!-- Template for out -->
<script type="text/x-handlebars" data-template-name="out">
<hr /><br />
<h1>Logged Out</h1>
<span>Login with "test/test"</span><br /><br />
<label>Username: </label>{{view Ember.TextField valueBinding="App.OutController.username"}}<br />
<label>Password: </label>{{view Ember.TextField valueBinding="App.OutController.password" type="password"}}<br />
{{#if App.loginController.isError}}
<span class="login-error">Error: Invalid username or password.</span><br />
{{/if}}
<br /><button {{action goLoggedIn href=true}}>Login</button>
</script>
現在我委託這個動作只是爲了我的路由器。我知道,我可以委託這我的控制器,以及:
action login target="controller"
但在此之後,該怎麼辦transitionTo功能在我的路由器?因爲我知道這不應該在我的控制器中完成。那麼如何將它傳遞給我的路由器?可能是我錯了,我不得不讓{{action goLoggedIn href=true}}
。然後我的路由器將這個函數委託給我的控制器,並得到響應。我需要像App.LoginController.doLogin和goLoggedIn: Ember.Route.transitionTo('loggedIn')
之類的東西。當這種情況下如何實現它?
編輯:
喜歡這個?
App.Router = Ember.Router.extend({
//needs controller handling
goLoggedIn: Ember.Route.transitionTo('loggedIn'),
goLoggedOut: Ember.Route.transitionTo('loggedOut'),
root: Ember.Route.extend({
index: Ember.Route.extend({
route: '/',
enter: function(router) {
var logged = getLoginState();
Ember.run.next(function() {
if (logged) {
router.transitionTo('loggedIn');
} else {
router.transitionTo('loggedOut');
}
});
}
}),
loggedIn: Ember.Route.extend({
connectOutlets: function(router, context){
...
}
}),
loggedOut: Ember.Route.extend({
connectOutlets: function(router, context){
...
},
goLoggedIn: function(router, evt) {
router.get('inController').tryLogin()
router.transitionTo('loggedIn')
}
})
...
我得到:Cannot call method 'split' of undefined
編輯2:
它現在的工作。我不得不刪除href=true
。謝謝
嘿如何從控制器轉換controllers.send(「loggedIn」)? –
而不是'goLoggedIn:Ember.Route.transitionTo('loggedIn'),'我試過'goLoggedIn:function(router,evt)router.get('inController')。tryLogin() router.transitionTo('loggedIn ') }',但它說:''不能調用未定義的方法'split''' –