在 Ember 中将初始会话状态 XHR 发送到服务器的位置
Where in Ember to make initial session status XHR to server
当我的 ember 应用程序启动时,我需要调用服务器以检查当前 session/user 状态。这需要在任何模型挂钩 运行 或呈现任何模板之前发生。
这应该发生在哪里?我找不到完全正确的地方 -- 它让 运行ning 有点太晚了,或者根本没有。现在我在我的应用程序路由初始化中使用 this._super.apply(),它工作正常但它在子路由模型挂钩后 运行s。
我认为它应该是一个初始化程序,但 ember-cli 文档明确指出初始化程序不应包含 XHR(它在生成器部分说明了这一点)。
我本质上是在问在哪里发出这个问题的答案中提到的服务器请求:How and when to use Ember.Application register and inject methods?
在您的 application
路线的 beforeModel
挂钩中执行此操作。确保检查 session/user 状态 return 的调用是 RSVP.promise
和 return beforeModel
挂钩中的此承诺。 Ember 保证执行将阻塞直到这个承诺 resolves/rejects。因此,将会话的 failure/lack 重定向到您的 auth
路由或任何有意义的内容,或者让执行按原样继续。 application
路由是应用程序的基本路由,每次刷新应用程序时都会输入,包括应用程序的初始加载。每次子路由更改时,不会重新进入 application
路由,也不会调用此挂钩。但是,如果您在子路径中并点击刷新,将进入 application
路径并执行所有挂钩。根据您的需要,您可能还需要在子路径的 beforeModel
挂钩中执行代码。如果是这样,请使用 mixin
或使所有子路由都从处理此功能的公共基础 route
扩展
创建 ember 应用程序后,您可以调用 deferReadiness() 方法,然后进行 xhr 调用,成功后调用 advanceReadiness()
这样,在您的 xhr 调用完成之前,应用程序将不会继续启动。
您可以在文档中查看更多信息 - http://emberjs.com/api/classes/Ember.Application.html#method_deferReadiness
当我的 ember 应用程序启动时,我需要调用服务器以检查当前 session/user 状态。这需要在任何模型挂钩 运行 或呈现任何模板之前发生。
这应该发生在哪里?我找不到完全正确的地方 -- 它让 运行ning 有点太晚了,或者根本没有。现在我在我的应用程序路由初始化中使用 this._super.apply(),它工作正常但它在子路由模型挂钩后 运行s。
我认为它应该是一个初始化程序,但 ember-cli 文档明确指出初始化程序不应包含 XHR(它在生成器部分说明了这一点)。
我本质上是在问在哪里发出这个问题的答案中提到的服务器请求:How and when to use Ember.Application register and inject methods?
在您的 application
路线的 beforeModel
挂钩中执行此操作。确保检查 session/user 状态 return 的调用是 RSVP.promise
和 return beforeModel
挂钩中的此承诺。 Ember 保证执行将阻塞直到这个承诺 resolves/rejects。因此,将会话的 failure/lack 重定向到您的 auth
路由或任何有意义的内容,或者让执行按原样继续。 application
路由是应用程序的基本路由,每次刷新应用程序时都会输入,包括应用程序的初始加载。每次子路由更改时,不会重新进入 application
路由,也不会调用此挂钩。但是,如果您在子路径中并点击刷新,将进入 application
路径并执行所有挂钩。根据您的需要,您可能还需要在子路径的 beforeModel
挂钩中执行代码。如果是这样,请使用 mixin
或使所有子路由都从处理此功能的公共基础 route
扩展
创建 ember 应用程序后,您可以调用 deferReadiness() 方法,然后进行 xhr 调用,成功后调用 advanceReadiness()
这样,在您的 xhr 调用完成之前,应用程序将不会继续启动。
您可以在文档中查看更多信息 - http://emberjs.com/api/classes/Ember.Application.html#method_deferReadiness