angularjs - Bagaimana cara menggunakan layanan yang diinjeksikan dalam metode statis


Saya ingin menggunakan angularjs dan typescript bersama-sama. Saya sedang mencoba membuat Orm factory dengan typescript dan mengalami beberapa masalah.

Saya mendefinisikan kelas pabrik saya sebagai:

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> {
        //...
    }
}

Di sini saya mendefinisikan pabrik.

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

Bagaimana saya bisa menggunakan $http atau $q dalam metode findAll()?

Jawaban #1

Untuk hidup dalam ekosistem Angular, singleton sebaiknya berupa layanan. Jadi pindahkan fungsi findAll ke layanan sendiri. Dengan cara itu, ia bisa memiliki akses ke layanan lain seperti $http dan $q.

Artikel terkait