Ember.js 视图中的重定向

Ember.js 视图中的重定向,ember.js,ember-old-router,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 "

我正在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"
submitLogin通过使用{{action“submitLogin”}从模板触发


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

您应该在当前路由中实现您的
submitLogin
hander,并从处理程序转换路由,这类似于:

submitLogin:(路由器,事件)->
login=event.context.email//例如
密码=event.context.password//例如
//在这里打电话吗。。。
//和来自回复处理程序:
router.transitiono('loggedIn');

您必须在操作助手中传递电子邮件和密码容器,例如:
{{action submitLogin this}

您应该在当前路由中实现您的
submitLogin
句柄,并从处理程序转换路由,这类似于:

submitLogin:(路由器,事件)->
login=event.context.email//例如
密码=event.context.password//例如
//在这里打电话吗。。。
//和来自回复处理程序:
router.transitiono('loggedIn');
您必须在action helper中传递电子邮件和密码容器,例如:
{{{action submitLogin this}}

此讨论引导我进行以下设计:

  • 让视图处理事件
  • 使用smth将事件转发到路由器。像这里面的景色

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

    这一讨论引导我进行以下设计:

  • 让视图处理事件
  • 使用smth将事件转发到路由器。像这里面的景色

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

  • 这里的关键点是,我不需要在路由器外部更改路由器的状态,而是发送上下文以由路由器的当前状态处理。

    因此,基本上这意味着所有事件(在此之后我更改应用程序的状态)都应该传递给路由。最初我希望由控制器来处理。事实上,我的理解是,事件处理大部分都包含在视图(而不是控制器)中,甚至我的印象是扩展Ember.View的目的是处理事件。有谁能推荐一些“最佳实践”类型的规则吗?@AndreiVaranovich控制器旨在作为数据的代理,并包含增值原语,但路由器状态应始终从内部进行修改。@pauldechov视图应如其名称所示,仅包含渲染内容,如计算属性、样式。。。等等。无论如何,我认为支持从视图/控制器调用路由器可能是一个不错的特性。显然,视图和控制器都可以“部分”处理某些逻辑,例如对某些用户事件作出反应。好吧,至少视图可以做到这一点。也许来自Emberjs团队的人对此有意见。否则,我将尝试在Github上报告此功能请求。因此,基本上这意味着,在我更改应用程序状态之后,所有事件都应传递给路由。最初我希望由控制器来处理。事实上,我的理解是,事件处理大部分都包含在视图(而不是控制器)中,甚至我的印象是扩展Ember.View的目的是处理事件。有谁能推荐一些“最佳实践”类型的规则吗?@AndreiVaranovich控制器旨在作为数据的代理,并包含增值原语,但路由器状态应始终从内部进行修改。@pauldechov视图应如其名称所示,仅包含渲染内容,如计算属性、样式。。。等等。无论如何,我认为支持从视图/控制器调用路由器可能是一个不错的特性。显然,视图和控制器都可以“部分”处理某些逻辑,例如对某些用户事件作出反应。好吧,至少视图可以做到这一点。也许来自Emberjs团队的人对此有意见。否则,我将尝试在Github上报告此功能请求。您可以使用
    this.get('controller.target')
    其中
    this
    是视图,而不是引用绝对路径,您可以使用
    this.get('controller.target')
    其中
    this
    是视图。