将模块注入服务AngularJS ES6

时间:2016-01-11 18:27:29

标签: angularjs ecmascript-6 angularjs-service

我是Angular中ES6语法的新手。我尝试创建服务并使用$httpLocalStorageModule

当我尝试将两个模块注入我的服务时,我得到的错误是我的语法没有处于严格模式。我做错了什么?

服务/ auth.js

export default class {

  constructor($http, localStorageService) {
    this.$http = $http;
    this.localStorageService = localStorageService;
  }
}

服务/ index.js

import angular from 'angular';

import auth from './auth';

export default angular
  .module( 'app.services', [] )
  .service( 'Authentication', auth )
  .name;

使用Angular 1.4.5

2 个答案:

答案 0 :(得分:4)

我能够在构造函数中使用'ngInject';来解决它。

我认为它不起作用,因为当'ngInject'让Babel转译器知道如何处理这种注射时

export default class {

  constructor($http, localStorageService) {
    'ngInject';
    this.$http = $http;
    this.localStorageService = localStorageService;
  }
}

答案 1 :(得分:4)

要正确实现这一点,不依赖于转换器,只需在您的类中添加一个静态getter,就像这样......

export class {
  constructor($http, localStorageService) {
    // Store references to the $http and localStorageService providers
    this.$http = $http;
    this.localStorageService = localStorageService;
  }

  static get $inject() {
    return ['$http', 'localStorageService'];
  }
}

AngularJS将确认给定类的$inject属性并相应地处理您的依赖注入。