2013-06-12 14 views
8

Mam aplikację, która musi być konfigurowalna, a jeden parametr jest źródłem adresu URL. Aplikacja niekoniecznie znajduje się w katalogu głównym witryny, tj. może być hostowany pod numerem http://onedomain.com/index.html, gdzie appName będzie /, ponieważ może być hostowany pod numerem , gdzie appName będzie /myapp/.Ustawienia globalne w AngularJS

Ale muszę znać appName w routerze, więc w configFn mojego modułu, do tego rodzaju rzeczy:

return $routeProvider.when(appName + "index.html", { 
    templateUrl: 'views/main.html', 
    controller: 'MainCtrl' 
}) 

Jak mam więcej parametrów, zacząłem usługę nazwałem Settings ale nie można wstrzykiwać usług podczas konfigurowania modułu ...

Co byś zrobił?

Dla mojego zainteresowania, zacząłem myśleć o niestandardowym dostawcy, ale nie jestem pewien, czy to właściwe.

Odpowiedz

22

Dla Settings powiązanych informacji, używam constant:

angular.module(...) 
    .constant("APPNAME", "/myapp/") 
    .controller(..., function(..., APPNAME) {...}) 

Oto simple plunker zilustrować stała.

+0

Odkryłem 'stałe' kilka minut po zadaniu mi pytania. Ale twój przykład jest bardziej przejrzysty niż Angular doc :) Dzięki! –

2

Po prostu użyj .when('/' i <base href="/myapp/" />.

+0

Dzięki za cynk. Zapomniałem o tym. Wybieram odpowiedź @marcoseu, ponieważ jest świetna w bardziej ogólny sposób. –

+0

o ogólnej stałej, aby "podstawowa ścieżka" była po prostu szalona – Ven

+0

Oczywiście i mam nadzieję, że nie robię tego. Mam więcej stałych. –