Hier ist eine andere Möglichkeit, Titeländerungen vorzunehmen. Vielleicht nicht so skalierbar wie eine Factory-Funktion (die möglicherweise unbegrenzte Seiten verarbeiten kann), aber es war für mich einfacher zu verstehen:
In meiner index.html habe ich so angefangen:
<!DOCTYPE html>
<html ng-app="app">
<head>
<title ng-bind-template="{{title}}">Generic Title That You'll Never See</title>
Dann habe ich einen Teil namens "nav.html" gemacht:
<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>
Dann ging ich zurück zu "index.html" und fügte die nav.html mit ng-include und der ng-view für meine Partials hinzu:
<body class="ng-cloak" ng-controller="MainCtrl">
<div ng-include="'partials/nav.html'"></div>
<div>
<div ng-view></div>
</div>
Beachten Sie, dass ng-Mantel? Es hat nichts mit dieser Antwort zu tun, aber es verbirgt die Seite, bis sie geladen ist , eine nette Geste :) Erfahren Sie hier, wie: Angularjs - ng-cloak / ng-show-Elemente blinken
Hier ist das Grundmodul. Ich habe es in eine Datei namens "app.js" eingefügt:
(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"});
});
}());
Wenn Sie gegen Ende des Moduls schauen, werden Sie feststellen, dass ich eine Critter-Detail-Seite habe, die auf: id basiert. Es ist ein Teil, der auf der Crispy Critters-Seite verwendet wird. [Blöd, ich weiß - vielleicht ist es eine Seite, auf der alle Arten von Hühnernuggets gefeiert werden;) Wie auch immer, Sie können den Titel aktualisieren, wenn ein Benutzer auf einen beliebigen Link klickt. Dort würde das $ root.title-Update hingehen, genau wie Sie es in der obigen Datei nav.html gesehen haben:
<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>
Tut mir leid, aber ich bevorzuge einen Beitrag, der genügend Details enthält, um ihn zum Laufen zu bringen. Beachten Sie, dass die Beispielseite in den AngularJS-Dokumenten veraltet ist und eine Version 0.9 der ng-bind-Vorlage zeigt. Sie können sehen, dass es nicht so viel anders ist.
Nachgedacht: Sie wissen das, aber es ist für alle anderen da; Am Ende der index.html muss die Datei app.js im Modul enthalten sein:
<!-- APP -->
<script type="text/javascript" src="js/app.js"></script>
</body>
</html>