Emberjs在视图中重定向

时间:2012-08-04 17:39:02

标签: ember.js ember-old-router

我正在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

正如您在此代码段中看到的,我想在显示网络应用的“私人”区域之前检查用户名/密码。这里最好的做法是什么?

2 个答案:

答案 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促使我采用以下设计:

  1. 让视图处理事件
  2. 使用smth将事件转发到路由器。在视图中像这样

    App.router.send('signUp',context)
    
  3. 这里的关键是我不需要改变路由器外部路由器的状态,而是发送上下文由路由器的当前状态处理。