2015-04-03 49 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

相關問題