将服务注入 Ember 实用程序

Inject service into a Ember utility

将服务注入实用程序 Ember-cli ??

我有一个 Ember 实用程序,它使用 Ember.$.ajax 进行 ajax 调用。 但是当我从服务器收到未经授权的响应时,我想使会话无效。 为此,我需要访问我无法在实用程序中访问的会话服务。

在下面的link中,它讲述了如何在服务中使用util而不是在util中使用服务 https://guides.emberjs.com/v2.12.0/tutorial/service/

  1. 使用初始化程序将 Ember 应用程序添加到 window 范围:

    a) 使用 Ember CLI 生成初始值设定项:

    ember generate initializer global-app
    

    b) 在生成的初始值设定项中:

    
    export function initialize(application) {
      window.AppContainer = application;
    }
    
    export default {
      name: 'global-app',
      initialize
    };
    
    
  2. 然后您可以通过utils方法在AppContainer中找到您的服务:


     const session = window.AppContainer.lookup('service:session');
     session.invalidate();