angularjs - Hvordan bruke injiserte tjenester i statiske metoder
Jeg vil bruke AngularJS og TypeScript sammen. Jeg prøver å lage Orm-fabrikk med TypeScript og har støtt på noen problemer.
Jeg definerte fabrikkklassen min som:
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> {
//...
}
}
Her definerte jeg fabrikken.
OrmModule:ng.IModel = angular.module('core.orm', []);
OrmModule.factory('OrmModel', ['$http', '$q', OrmModel]);
Hvordan kan jeg bruke $http eller $q i findAll()-metoden?
Svar #1
For å leve i Angular-økosystemet bør singletons være tjenester. Så flytt findAll-funksjonen inn i sin egen tjeneste. På den måten kan den ha tilgang til andre tjenester som $http og $q.