上面的 JSFiddle 是为了解释这个问题而设置的。但是,基本上:
HTML:
<breadcrumb></breadcrumb>
<div ng-view></div>
角度指令和路由:
angular
.module('app', [])
.directive('breadcrumb', function() {
return {
restrict: 'E',
template: "<ul class='breadcrumb'><li ng-repeat='node in path'><a ng-href='{{node.url}}'>{{node.label}}</a></li></ul>",
replace: true,
controller: Ctrl1
}
})
.config(['$routeProvider', function($routeProvider) {
$routeProvider
.when('/', {
template: '<h1>{{pgTitle}}</h1>',
controller: Ctrl2
});
}]);
控制器
function Ctrl1($scope) {
$scope.path = [{
label: 'Home',
url: '#/'}];
$scope.pgTitle = "Home"
}
function Ctrl2($scope, $routeParams) {
$scope.path = [{
label: 'Home',
url: '#/'},{
label: 'Node 2',
url: '#/node2'}];
$scope.pgTitle = "Node 2"
}
我希望$scope.path
Ctrl2 中的更改会更新面包屑指令,但它没有发生。我必须相信这与它们的相对范围有关,但根本无法很好地理解它以了解什么。我已经阅读了数十篇关于它的文章和 StackOverflow 帖子,但没有什么具体足以让我看到我缺少什么。
我希望有人能指出我正确的方向。
非常感谢!
新西兰