2015-12-20 48 views
0

我有一個用JavaScript編寫的AngularJS服務,我想將其轉換爲TypeScript。 Javascript版本立即返回一個函數。爲什麼它會這樣做,我將如何在TypeScript中實現這一點?AngularJS Service Types in Typescript

的JavaScript

Geisha.service("loginModal", ["$uibModal", "$rootScope", function ($uibModal: angular.ui.bootstrap.IModalService, $rootScope: ICustomRootScopeService) { 
function assignCurrentUser(user: User) { 
    $rootScope.currentUser = user; 
    return user; 
} 

return function() { 
    var instance = $uibModal.open({ 
     templateUrl: "/Angular/Security/Views/loginTemplate.html", 
     controller: "loginModalCtrl" 
    }); 

    return instance.result.then(assignCurrentUser); 
}}]); 

打字稿

在打字稿,我只爲走得更遠,創建構造函數和方法之一,但不知道如何實現即時回報功能

module G.Services { 
export class LoginModal { 

    $rootScope: ICustomRootScopeService; 
    $uibModal: angular.ui.bootstrap.IModalService; 

    static $inject = ["$rootScope", "$uibModal"]; 
    constructor($rootScope: ICustomRootScopeService, $uibModal: angular.ui.bootstrap.IModalService) { 
     this.$rootScope = $rootScope; 
     this.$uibModal = $uibModal; 
    } 

    assignCurrentUser(user: User): User { 
     this.$rootScope.currentUser = user; 
     return user; 
    } 


} 
Geisha.service("loginModal", LoginModal);} 

回答

1

如何實現立即返回功能

在你的情況下你有一個service that is just a function。如果你使用的課程將是,它的功能是。如果你只是使用功能,那就更好了。

如果你願意做的重構具有loginModal.assignCurrentUser(...stuff...)其他地方,而不是loginModal(...stuff...)