AngularJS 結合 Bootstrap Breadcrumb


結構大約為:

  • static/vendor/angular.js
  • static/vendor/angular-breadcrumb/breadcrumb.js
  • index.html

頁面的 HTML 大約是:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<!DOCTYPE html>
<html lang="en" ng-app="MyApp">
<head>
<meta charset="utf-8">
<title>My Labs</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="/static/vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<link href="/static/vendor/bootstrap/css/bootstrap-responsive.min.css" rel="stylesheet">
<script src="/static/vendor/jquery.js"></script>
<script src="/static/vendor/angular.js"></script>
<script src="/static/vendor/angular-breadcrumb/breadcrumb.js"></script>
<script src="/static/js/application.js"></script>
</head>
<body ng-controller="MainController">
<ul class="breadcrumb">
<li ng-repeat="breadcrumb in breadcrumbs.getAll()">
<ng-switch on="$last">
<span ng-switch-when="true"></span>
<span ng-switch-default><a href="#" class="hand"></a></span>
</ng-switch>
<span class="divider">/</span>
</li>
<li class="pull-right"><div id="spinner"><i class="icon-spinner icon-spin icon-1x"></i></div></li>
</ul>
</body>
</html>

而 application.js 大約是:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var IndexController = function($scope, breadcrumbs) {
breadcrumbs.set([{
"name": "Home",
"path": "/"
}]);
};
IndexController.$inject = ['$scope', 'breadcrumbs'];

angular.module('LabApp', ['breadcrumbs']).config(['$routeProvider', function($routeProvider) {
$routeProvider.
when('/', {
templateUrl: 'views/index.html',
controller: IndexController
}).
}).controller('MainController', ['$scope', 'breadcrumbs', function($scope, breadcrumbs) {
$scope.breadcrumbs = breadcrumbs;
});

最後的 angular-breadcrumb/breadcrumb.js 應該是這樣:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
angular.module('breadcrumbs', []);
angular.module('breadcrumbs').factory('breadcrumbs', function() {
var breadcrumbs = [];
var breadcrumbsService = {};

breadcrumbsService.set = function(urls) {
breadcrumbs = urls;
};

breadcrumbsService.getAll = function() {
return breadcrumbs;
};

breadcrumbsService.getFirst = function() {
return breadcrumbs[0] || {};
};

return breadcrumbsService;
});