2017-02-21 94 views
1

您推荐在路由之间传递消息的是什么?我想得到的是:EmberJS:路由之间传递数据

  • 注册页面,您可以在应用程序中注册自己。
  • 如果注册过程正常,应用程序会将您重定向到登录页面,但它应该显示带注册响应的消息。 我的意思是,如果您从注册页面重定向到达登录页面,它应该显示注册消息。如果您直接访问该页面,则不应显示任何内容。

我想过为登录路由创建一个新路径(signup_confirmation)。在那里,如果路径是signup_confirmation,它将显示消息。

想法?

预先感谢您!

+0

看一看[这个问题](http://stackoverflow.com/questions/39286750/passing-parameters-between-routes-in-ember-2-x)和[此讨论](https://discuss.emberjs.com/t/how-to-pass-parameters-between-different-routes-in-ember-2-x/12095)。 – ykaragol

+0

谢谢! @ykaragol。最后,我只需要传递一个变量,所以我使用了查询参数。 –

回答

2

您的选择:

  1. 添加signupMessage属性login控制器,然后在signup控制器injectlogin控制器和登记后成立的signupMessage值。然后你可以在login模板中显示它(当用户离开login路线时,请不要饶恕这个属性,deactivate路线的事件应该对此有所帮助)。
  2. 创建一个service,memoryStorage来存储可以从不同地方访问的数据。在signup控制器中,您可以设置一条消息,并从login控制器获取并显示(并从memoryStorage当然删除)。
  3. 使用Flash消息,无论现在哪条路线处于活动状态,都将在页面某处显示几秒钟。 ember-cli-flash是这个解决方案的一个很好的插件。
2

根据您的要求,该服务是在不同应用程序状态之间共享数据的好地方。

Ember.Service是一个Ember对象,它在应用程序的整个过程中生存,并且可以在应用程序的不同部分中使用。

服务对需要共享状态或持久连接的功能很有用。服务的示例使用可以包括:

  • 用户/会话认证。
  • 地理位置。
  • WebSockets。
  • 服务器发送的事件或通知。
  • 服务器支持的API调用可能不适合Ember数据。
  • 第三方API。
  • 记录。

https://guides.emberjs.com/v2.11.0/applications/services/