2014-07-11 10 views
6

Aktualnie używam dyrektywy znalezionej w tym pytaniu, aby zmienić tytuły stron.Ustaw tytuł strony za pomocą Angular i UI-Router na podstawie danych w kontrolerze

Set Page title using UI-Router

Następnie, w moim pliku app.js, ja dołączyć PageTitle danych, tak jak poniżej:

.state('home', { 
    url: '/home' 
    templateUrl: 'home.html' 
    controller: 'homeController' 
    data: { 
    pageTitle: 'Home' 
    } 
}) 

jednak powiedzieć, na przykład, jeśli HomeController miał $scope.todaysDate zmienną, która została pobrana z usługi. Czy istnieje sposób, aby uzyskać dostęp do tej zmiennej w moim routerze, więc mogę zmienić dane i PageTitle do czegoś podobnego:

data: { 
    pageTitle: 'Home ' + $scope.todaysDate 
} 

jestem w stanie przejść do sterownika i używając $rootScope.pageTitle = 'some value' widzę zmienia zmienną 'some value' kiedy patrzę w narzędzie konsoli Batarang, ale rzeczywisty tytuł strony się nie zmienia.

Odpowiedz

2

Może w tym przypadku zadziała resolve. Jeśli chcesz mieć pewność, że niektóre dane są zawsze dostępne dla kontrolera stanu, możesz użyć rozstrzygnięcia. Na przykład powiedzmy, że mam usługę o nazwie "kalendarz" i udostępnia ona funkcję o nazwie "getTodaysDate". Mogę wykonać następujące czynności:

.state('home', { 
    url: '/home', 
    templateUrl: 'home.html', 
    controller: 'homeController', 
    resolve:{ 
      pageTitle: function(calendar){ 
      return 'Home ' + calendar.getTodaysDate(); 
     } 
    } 
}) 

Now „pageTitle” zostanie rozwiązany i wstrzykuje się „HomeController” przed zmianą stanu. Mam nadzieję że to pomoże.

+0

Dziękuję za wzmiankę o rozwiązaniu. Wydaje się, że to właściwe podejście. Nie mam jeszcze działa. Myślę, że robię coś nie tak z kodem w mojej fabryce. (Powiedziałem, że wcześniej była to usługa, ale tak naprawdę jest to fabryka). – twinb

+0

@twinb, co masz, to usługa. Istnieje więcej niż jeden sposób rejestracji usługi w module. Używasz metody fabrycznej (najczęściej). Zajrzyj tutaj, aby poznać szczegóły: https://docs.angularjs.org/guide/services – Nick

+0

@twinb czy masz szczęście? Z przyjemnością przedstawiłbym wam przykład, gdyby to pomogło. Jest to dość powszechny przypadek użycia i myślę, że możesz po prostu zmagać się z małą krzywą uczenia się. – Nick

Powiązane problemy