2014-04-10 65 views
2

非常匆忙的問題,對不起!在AngularJS服務中存儲常量?

我知道如何保存常量在服務與AngularJS,例如:

.value('baseUrl', 'http://127.0.0.1:8001/api/v1/') 

但我怎麼能創建使用另一個彼此不變? 似乎沒有數值的DI?!?

例如,如果我想創建一個GetUsersUrl這是baseUrl字符串+「用戶/」(串聯)

我想這是簡單...但無法找到如何做到這一點。 謝謝。

回答

3

您可以將值存儲在服務中,將其配置到運行階段,然後再訪問這些值。例如:

.factory('UrlService', function() { 
    var UrlService = {}; 

    UrlService.baseUrl = undefined; // you can set a default value 
    UrlService.getUsersUrl = function() { 
    if (UrlService.baseUrl === undefined) { 
     return undefined; 
    } else { 
     return UrlService.baseUrl + '/Users/'; 
    } 
    }; 

    return UrlService; 
}); 

運行階段發生在配置後。

.run(function(UrlService) { 
    UrlService.baseUrl = 'localhost:8001/api/v1'; 
}); 

然後,在你的控制器等你可以注入UrlService做

UrlService.getUsersUrl() 

編輯:重寫了答案。

編輯2:另一種方法。

在我看來,你只是真的需要baseUrl是一個常數。所以,你可以這樣做:

.value('baseUrl', 'localhost:1337') 
.factory('urlService', ['baseUrl', function(baseUrl) { 
    return { 
    getUsersUrl: function() { return baseUrl + '/users/'; }, 
    // OR 
    usersUrl: baseUrl + '/users/' // it can also be a primitive value 
    } 
}]); 

這種方法適用(並且是多「的角路」),如果你不需要實際配置的baseUrl。例如,如果您可以根據運行哪個環境(開發,生產等)來填寫baseUrl的相應值,則無需對其進行配置。或者,如果該值是恆定的。

+0

非常感謝,正是我需要的! –