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.

Relaterte artikler