我正在Ember建立一个登录表单。
App.Router = Ember.Router.extend( //声明这里);
然后我有以下观点
App.SignInView = Ember.View.extend
templateName: 'signin'
submitLogin: (event) ->
login = @getPath('email.value')
password = @getPath('password.value')
console.log "Login: " + login + " Password: " + password
// how do I redirect to a different state? I.e. "loggedIn"
使用{{action“submitLogin”}}
从模板触发submitLogin正如您在此代码段中看到的,我想在显示网络应用的“私人”区域之前检查用户名/密码。这里最好的做法是什么?
答案 0 :(得分:3)
你应该在当前路线中实现你的submitLogin
手,并从处理程序转换路线,这就像:
submitLogin: (router, event) ->
login = event.context.email // e.g
password = event.context.password // e.g
// do ajax call here...
// and from reply handlers:
router.transitionTo('loggedIn');
你必须通过电子邮件&动作帮助器中的密码容器,例如:{{action submitLogin this}}
答案 1 :(得分:1)
此讨论Ember.js get view triggering event in the router促使我采用以下设计:
使用smth将事件转发到路由器。在视图中像这样
App.router.send('signUp',context)
这里的关键是我不需要改变路由器外部路由器的状态,而是发送上下文由路由器的当前状态处理。