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.