1

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

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

4

2 回答 2

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}}

于 2012-08-04T19:47:34.637 回答
1

这个讨论Ember.js 在路由器中获取视图触发事件导致我进行以下设计:

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

    App.router.send('signUp',context)
    

这里的关键是我不需要在路由器之外改变路由器的状态,而是发送上下文由路由器的当前状态来处理。

于 2012-08-09T06:10:12.720 回答