2016-06-02 8 views
1

Ich habe eine Reihe von globalen Werten, die ich in einem .value() Konstrukt definiere. Ich möchte in der Lage sein, eine Variable darin, zu definieren, so dass ich die Variable verweisen kann, anstatt die Informationen über wiederholen und immer wieder, ähnlich wie:Wie verwendet man eine Variable in einem .value() -Konstrukt?

.value('globalValues', 
{ 
    host: "http://10.0.2.2/", 
    site: "MySite/", 

    adsApi: host + site + 'api/AdsApi/', 
    accountApi: host + site + 'api/AccountApi/', 
    accountLogout: host + site + 'Account/LogoutApi/' 
}) 

Derzeit wird diese nicht funktioniert, weil host ist undefiniert, und ich kann host in diesem Konstrukt nicht definieren. Ist das anders möglich?

+0

Da Sie Variablen brauchen ... einen Dienst statt – charlietfl

+0

winkelförmigen Stangen Modul Handhabung unordentlich ist. Sie können zu Standard-JS-Modulen zumindest teilweise wechseln und haben dieses Problem nicht. –

Antwort

0

value service ist syntactic sugar over factory service (und factory ist gezuckert provider service).

app.value('globalValues', { ... }); 

ist identisch mit

app.factory('globalValues', (() => { 
    var eagerlyAssignedObj = { ... }; 

    return() => eagerlyAssignedObj; 
})()); 

factory ist der Anwendungsfall für ein Objekt, das nicht auf Dienstdefinitionszeit definiert werden können. Normalerweise bedeutet dies, dass zusätzliche Daten sollten als einen anderen Dienst injiziert werden:

app.factory('globalValues', (hostAndSiteService) => ({ 
    host: hostAndSiteService.host, 
    ... 
})); 
Verwandte Themen