Ich migriere meine AngularJS-basierte App, um den UI-Router anstelle des integrierten Routings zu verwenden. Ich habe es wie unten gezeigt konfiguriert
.config(function($stateProvider, $urlRouterProvider) {
$urlRouterProvider.otherwise('/home');
$stateProvider
.state('home', {
url: '/home',
templateUrl : 'views/home.html',
data : { pageTitle: 'Home' }
})
.state('about', {
url: '/about',
templateUrl : 'views/about.html',
data : { pageTitle: 'About' }
})
});
Wie kann ich die pageTitle-Variable verwenden, um den Titel der Seite dynamisch festzulegen? Mit dem eingebauten Routing könnte ich tun
$rootScope.$on("$routeChangeSuccess", function(currentRoute, previousRoute){
$rootScope.pageTitle = $route.current.data.pageTitle;
});
und binden Sie dann die Variable in HTML wie unten gezeigt
<title ng-bind="$root.pageTitle"></title>
Gibt es ein ähnliches Ereignis, an das ich mich mit dem UI-Router anschließen kann? Ich habe festgestellt, dass es die Funktionen 'onEnter' und 'onExit' gibt, aber sie scheinen an jeden Status gebunden zu sein und erfordern, dass ich den Code wiederhole, um die Variable $ rootScope für jeden Status festzulegen.