Ось інший спосіб змінити назву. Можливо, не така масштабована, як фабрична функція (яка могла б обробляти необмежену кількість сторінок), але мені було легше зрозуміти:
У своєму index.html я почав так:
<!DOCTYPE html>
<html ng-app="app">
<head>
<title ng-bind-template="{{title}}">Generic Title That You'll Never See</title>
Тоді я зробив часткову назву "nav.html":
<div ng-init="$root.title = 'Welcome'">
<ul class="unstyled">
<li><a href="#/login" ng-click="$root.title = 'Login'">Login</a></li>
<li><a href="#/home" ng-click="$root.title = 'Home'">Home</a></li>
<li><a href="#/admin" ng-click="$root.title = 'Admin'">Admin</a></li>
<li><a href="#/critters" ng-click="$root.title = 'Crispy'">Critters</a></li>
</ul>
</div>
Потім я повернувся до "index.html" і додав nav.html, використовуючи ng-include і ng-view для моїх партій:
<body class="ng-cloak" ng-controller="MainCtrl">
<div ng-include="'partials/nav.html'"></div>
<div>
<div ng-view></div>
</div>
Помітили, що нг-плащ? Це не має нічого спільного з цією відповіддю, але він приховує сторінку, поки не буде завантажено, приємний штрих :) Дізнайтеся, як тут: Angularjs - елементи ng-cloak / ng-show блимають
Ось базовий модуль. Я помістив його у файл під назвою "app.js":
(function () {
'use strict';
var app = angular.module("app", ["ngResource"]);
app.config(function ($routeProvider) {
// configure routes
$routeProvider.when("/", {
templateUrl: "partials/home.html",
controller:"MainCtrl"
})
.when("/home", {
templateUrl: "partials/home.html",
controller:"MainCtrl"
})
.when("/login", {
templateUrl:"partials/login.html",
controller:"LoginCtrl"
})
.when("/admin", {
templateUrl:"partials/admin.html",
controller:"AdminCtrl"
})
.when("/critters", {
templateUrl:"partials/critters.html",
controller:"CritterCtrl"
})
.when("/critters/:id", {
templateUrl:"partials/critter-detail.html",
controller:"CritterDetailCtrl"
})
.otherwise({redirectTo:"/home"});
});
}());
Якщо ви подивитесь на кінець модуля, ви побачите, що у мене є сторінка з деталізацією ключових слів на основі: id. Це часткова частина, яка використовується на сторінці Crispy Critters. [Корні, я знаю - можливо, це сайт, який святкує всі види курячих самородків;) У будь-якому випадку, ви можете оновити заголовок, коли користувач натискає будь-яке посилання, тому на моїй головній сторінці Crispy Critters, яка веде на сторінку з деталізацією ключових слів, ось куди піде оновлення $ root.title, як ви бачили в nav.html вище:
<a href="#/critters/1" ng-click="$root.title = 'Critter 1'">Critter 1</a>
<a href="#/critters/2" ng-click="$root.title = 'Critter 2'">Critter 2</a>
<a href="#/critters/3" ng-click="$root.title = 'Critter 3'">Critter 3</a>
Вибачте, настільки вітряно, але я віддаю перевагу публікації, яка дає достатньо деталей, щоб її почати працювати. Зауважте, що сторінка прикладу в документах AngularJS застаріла і показує 0,9 версії ng-bind-шаблону. Ви можете бачити, що це не так вже й інакше.
Задумливість: ви знаєте це, але це тут для будь-кого іншого; У нижній частині index.html потрібно включити app.js з модулем:
<!-- APP -->
<script type="text/javascript" src="js/app.js"></script>
</body>
</html>