นี่คือวิธีที่แตกต่างกันในการเปลี่ยนแปลงชื่อเรื่อง อาจจะไม่ปรับขนาดได้เท่าฟังก์ชั่นจากโรงงาน (ซึ่งสามารถจัดการกับหน้าไม่ จำกัด ) แต่ฉันเข้าใจได้ง่ายขึ้น:
ใน 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 สำหรับ partials ของฉัน:
<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 [ซ้ำซากรู้ - อาจเป็นไซต์ที่ฉลองนักเก็ตไก่ทุกชนิด;) อย่างไรก็ตามคุณสามารถอัปเดตชื่อเมื่อผู้ใช้คลิกที่ลิงก์ใด ๆ ดังนั้นในหน้าหลักของ Critters 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 docs ล้าสมัยและแสดงเวอร์ชัน 0.9 ของ ng-bind-template คุณจะเห็นว่ามันไม่แตกต่างกันมาก
หลังจากนั้น: คุณรู้สิ่งนี้ แต่มันมีไว้สำหรับคนอื่น ที่ด้านล่างของ index.html ต้องมี app.js พร้อมโมดูล:
<!-- APP -->
<script type="text/javascript" src="js/app.js"></script>
</body>
</html>