如何根据AngularJS的局部视图动态更改标题?
如何根据AngularJS的局部视图动态更改标题?
我正在使用ng-view来包含AngularJS的局部视图,并希望根据被包含的视图更新页面标题和h1标题标签。尽管这些标签在局部视图控制器之外,但我无法想出如何将它们绑定到控制器中设置的数据。
如果是ASP.NET MVC,可以使用@ViewBag来完成这个任务,但我不知道在AngularJS中的等效方法。我已经搜索了有关共享服务、事件等方面,但仍无法使其正常工作。任何修改我的示例以使其正常工作的方法都将不胜感激。
我的HTML:
我的JavaScript:
var myModule = angular.module('myModule', []); myModule.config(['$routeProvider', function($routeProvider) { $routeProvider. when('/test1', {templateUrl: 'test1.html', controller: Test1Ctrl}). when('/test2', {templateUrl: 'test2.html', controller: Test2Ctrl}). otherwise({redirectTo: '/test1'}); }]); function Test1Ctrl($scope, $http) { $scope.header = "Test 1"; /* ^ how can I put this in title and h1 */ } function Test2Ctrl($scope, $http) { $scope.header = "Test 2"; }
admin 更改状态以发布 2023年5月22日
你可以在 级别定义控制器。
{{ Page.title() }} ...
你可以创建服务:Page
,并从控制器进行修改。
myModule.factory('Page', function() { var title = 'default'; return { title: function() { return title; }, setTitle: function(newTitle) { title = newTitle } }; });
从控制器中注入 Page
并调用 'Page.setTitle()'。
这是一个具体的示例:http://plnkr.co/edit/0e7T6l
我刚刚发现了一个设置页面标题的好方法,如果你正在使用路由的话:
JavaScript:
var myApp = angular.module('myApp', ['ngResource']) myApp.config( ['$routeProvider', function($routeProvider) { $routeProvider.when('/', { title: 'Home', templateUrl: '/Assets/Views/Home.html', controller: 'HomeController' }); $routeProvider.when('/Product/:id', { title: 'Product', templateUrl: '/Assets/Views/Product.html', controller: 'ProductController' }); }]); myApp.run(['$rootScope', function($rootScope) { $rootScope.$on('$routeChangeSuccess', function (event, current, previous) { $rootScope.title = current.$$route.title; }); }]);
HTML:
myApp ...
编辑:使用ng-bind
属性而不是大括号{{}}
,这样它们在加载时不会显示