我发现了几个类似的问题,但是没有一个答案有帮助。它们似乎都涉及某种类型的$location依赖关系,而我无法正确注入。
$location
我的代码如下:
(function() { // App dependencies var app = angular.module('portalExchange', ['ngRoute', 'app-products', 'app-manage', 'app-profile']); // [ Main Controller ] : PortalController app.controller('PortalController', function($scope) { if ($('.top_link_dashboard').hasClass('unactive_top')) { $('.top_link_dashboard').removeClass('unactive_top'); $('.top_link_dashboard').addClass('active_top'); } }); // Controller for Dashboard app.controller('DashboardController', function() { }); // Controller for Developers app.controller('DevelopersController', function($scope) { // Page.setTitle('Developers'); }); // Controller for Quote app.controller('QuoteController', function($scope) { // Page.setTitle('Begin Quote'); }); // Directive for Header app.directive('appHeader', function () { // Type of Directive, E for element, A for Attribute // url of a template return { restrict: 'E', templateUrl: 'templates/modules/globals/app-header.html' }; }); // Directive for Footer app.directive('appFooter', function () { return { restrict: 'E', templateUrl: 'templates/modules/globals/app-footer.html', controller: function(){ this.date = Date.now(); }, controllerAs:'footer' }; }); // configure our routes app.config(function($routeProvider) { $routeProvider // route for the dashboard page .when('/', { templateUrl : 'templates/sections/app-dashboard.html', controller : 'DashboardController' }) // route for the dashboard page .when('/dashboard', { title : 'My Dashboard', templateUrl : 'templates/sections/app-dashboard.html', controller : 'DashboardController' }) // route : Developers Page .when('/developers', { title : 'For Developers', templateUrl : 'templates/sections/app-developers.html', controller : 'DevelopersController' }) // route : Begin Quote .when('/quote', { title : 'Begin Quote', templateUrl : 'templates/sections/app-quote.html', controller : 'QuoteController' }); }); app.run(['$rootScope', '$route', function($rootScope) { $rootScope.$on('$routeChangeSuccess', function(newVal, oldVal) { if (oldVal !== newVal) { document.title = $route.current.title; } }); }]); })();
RUN功能
app.run(['$rootScope', '$route', function($rootScope) { $rootScope.$on('$routeChangeSuccess', function(newVal, oldVal) { if (oldVal !== newVal) { document.title = $route.current.title; } }); }]);
HTML
<!DOCTYPE html> <html lang="en" ng-app="portalExchange" ng-controller="PortalController as portal"> <head> <meta charset="utf-8"> <title ng-bind="title">myApp</title> </head>
我的方法很简单。在路由配置中,您可以定义title:
title
.when('/dashboard', { title : 'My Dashboard', templateUrl : 'templates/sections/app-dashboard.html', controller : 'DashboardController' })
然后您监听$routeChangeSuccess事件并进行设置document.title。在应用程序运行块中(为此的最佳位置):
$routeChangeSuccess
document.title
app.run(['$rootScope', '$route', function($rootScope, $route) { $rootScope.$on('$routeChangeSuccess', function() { document.title = $route.current.title; }); }]);
这种方法的好处是,它使您可以避免再绑定ng-bind="title",这很好。
ng-bind="title"