代码之家  ›  专栏  ›  技术社区  ›  IsraGab

如何将$Q提供者插入未包装到角度模块中的类中?

  •  0
  • IsraGab  · 技术社区  · 7 年前

    我有一个ES6模块

    微型模块

    let _q$;// I would like the $q provider of angularjs to be a private property of that module
    
    export default class MyClass{
       constructor($q){
          _$q = $q
        }
    }
    

    事实上,我找到的唯一方法是通过一个angularJS函数来声明MyClass:

    import MyClass from "../model/MyClass";
    angular.module('myModule').run(function($q){
       var myObject = new MyClass($q);
    })
    

    问题在于我无法访问当前文件之外的MyObject。

    我要做的是在MyModule中声明MyClass,然后导出它:

    class MyClass{
       constructor($q){
          _$q = $q
        }
    }
    
    export myObject = new MyClass($q);
    

    这里的问题是我不知道如何访问$Q。

    我有点困了:(

    2 回复  |  直到 7 年前
        1
  •  1
  •   georgeawg    7 年前
    import angular from 'angular';
    const $injector = angular.injector();
    const $q = $injector.get('$q');
    
    class MyClass {
      someMethod() {
        return $q.resolve('something');
      }
    };
    
    export myObject = new MyClass();
    

        2
  •  1
  •   IsraGab    7 年前

    import angular from 'angular';
    const $injector = angular.injector(['ng']);//<- ['ng'] is necessary to tell angular in which module the provider resides.
    const $q = $injector.get('$q');
    
    class MyClass {
      someMethod() {
        return $q.resolve('something');
      }
    };
    
    export let myObject = new MyClass();
    
    推荐文章