2015-04-03 79 views
4

我想一起使用angularjs和typescript。 我正在尝试使用打字机创建Orm factory,并堆积了一些问题。如何在静态方法中使用注入服务

我定义我的工厂类为:

class OrmModel implements IOrmModel { 
    static $inject = ['$http', '$q', 'config']; 

    private name:string; 
    private isNewRecord:boolean = false; 

    constructor(public $http:ng.IHttpService, private $q:ng.IQService, private config:Object) { 
     //... 
    } 

    static findAll(params:ISearchParams, relations:string[]):ng.IPromise<OrmModel> { 
     //... 
    } 
} 

在这里,我定义的工厂。

OrmModule:ng.IModel = angular.module('core.orm', []); 
OrmModule.factory('OrmModel', ['$http', '$q', OrmModel]); 

我怎样才能在findAll()方法使用$http$q

+0

注意:带一个类,你应该使用'myModule.service('OrmModel',ormModel)'。 – Paleo 2015-04-03 13:23:40

+0

从静态函数中使用依赖是一个坏主意。然而,你可以声明一个静态变量'private static $ http;',然后,在构造函数中,执行:'ormModel。$ http = $ http;' – Paleo 2015-04-03 13:26:20

+0

我想,我应该使用'service'像这样'myModule.service ('OrmModel',新的OrmModel())',因为角度最重要的服务是单例 – 2015-04-03 13:27:21

回答

1

要生活在角度生态系统单身应该是服务。因此,将findAll函数移动到它自己的服务中。这样它可以访问其他服务,如$http$q

+0

即使我们编码打字稿,你也不建议使用单件吗?有没有办法获得访问注入的参数,而使用打字稿单体? – iberbeu 2016-03-31 13:09:29

相关问题