angular - 视图改变时切换导航栏
angular - Switch navbar when view is changed
我正在使用 angular-route。min.js 我的导航栏有两种设计。
第一个是登陆页面导航栏,它将首先出现在我的 index.html 上。
第二个导航栏是当用户被路由到 /signin 页面时。
我不确定该怎么做。我看到有很多不同的方法可以做到这一点,但是 none 确实解释了在选择另一条路线时我如何更改整个 header 视图。他们只是展示了如何更改其中包含的链接。喜欢this Stack
如何在路由到 /signin 页面时关闭 header?
另外,我正在与另一个使用 Django 做后端的人一起工作。这就是为什么我将“{{ }}”更改为“[[ ]]”的原因。
var app = angular.module('app', ['ui.bootstrap', 'ngRoute']);
app.config(function($interpolateProvider, $routeProvider) {
$interpolateProvider.startSymbol('[[');
$interpolateProvider.endSymbol(']]');
$routeProvider
.when('/', {
templateUrl: 'pages/LandingPage.html',
})
.when('/signin', {
templateUrl: 'pages/SignIn.html'
})
.when('/contact', {
templateUrl: 'pages/contact.html'
});
});
<!DOCTYPE html>
<html lang="en" data-ng-app="app">
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js">
</script>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.4.1/angular-route.js">
</script>
</head>
<body>
<div ng-view></div>
</body>
</html>
我认为 ng-include
指令可以解决您面临的情况。
在控制器代码中。
.controller('HeaderCtrl', function($scope, $location) {
$scope.$on('$locationChangeSuccess', function(/* EDIT: remove params for jshint */) {
var path = $location.path();
//EDIT: cope with other path
$scope.templateUrl = (path==='/signin' || path==='/contact') ? 'template/header4signin.html' : 'template/header4normal.html' ;
});
})
在Html.
<body>
<div ng-controller="HeaderCtrl">
<div ng-include="templateUrl"></div>
</div>
<div ng-view></div>
</body>
希望对您有所帮助。 :)
你的两个 navbars
差别不大。另一种方法是使用 ng-class
和 ng-show
来提供不同的样式。
例如,在 navbar.html
:
<nav>
<span ng-show="isNormalPage">Inn</span>
<img ng-class="{align-center: isNormalPage}">Logo</img>
<span ng-show="isNormalPage">Sing in</span>
</nav>
在您的 JS 文件中,添加一个标记来标记 singin
页面:
.when('/signin', {
controller: [$scope, function ($scope) {
$scope.isNormalPage = false;
};
}]
})
我正在使用 angular-route。min.js 我的导航栏有两种设计。
第一个是登陆页面导航栏,它将首先出现在我的 index.html 上。
第二个导航栏是当用户被路由到 /signin 页面时。
我不确定该怎么做。我看到有很多不同的方法可以做到这一点,但是 none 确实解释了在选择另一条路线时我如何更改整个 header 视图。他们只是展示了如何更改其中包含的链接。喜欢this Stack
如何在路由到 /signin 页面时关闭 header?
另外,我正在与另一个使用 Django 做后端的人一起工作。这就是为什么我将“{{ }}”更改为“[[ ]]”的原因。
var app = angular.module('app', ['ui.bootstrap', 'ngRoute']);
app.config(function($interpolateProvider, $routeProvider) {
$interpolateProvider.startSymbol('[[');
$interpolateProvider.endSymbol(']]');
$routeProvider
.when('/', {
templateUrl: 'pages/LandingPage.html',
})
.when('/signin', {
templateUrl: 'pages/SignIn.html'
})
.when('/contact', {
templateUrl: 'pages/contact.html'
});
});
<!DOCTYPE html>
<html lang="en" data-ng-app="app">
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js">
</script>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.4.1/angular-route.js">
</script>
</head>
<body>
<div ng-view></div>
</body>
</html>
我认为 ng-include
指令可以解决您面临的情况。
在控制器代码中。
.controller('HeaderCtrl', function($scope, $location) {
$scope.$on('$locationChangeSuccess', function(/* EDIT: remove params for jshint */) {
var path = $location.path();
//EDIT: cope with other path
$scope.templateUrl = (path==='/signin' || path==='/contact') ? 'template/header4signin.html' : 'template/header4normal.html' ;
});
})
在Html.
<body>
<div ng-controller="HeaderCtrl">
<div ng-include="templateUrl"></div>
</div>
<div ng-view></div>
</body>
希望对您有所帮助。 :)
你的两个 navbars
差别不大。另一种方法是使用 ng-class
和 ng-show
来提供不同的样式。
例如,在 navbar.html
:
<nav>
<span ng-show="isNormalPage">Inn</span>
<img ng-class="{align-center: isNormalPage}">Logo</img>
<span ng-show="isNormalPage">Sing in</span>
</nav>
在您的 JS 文件中,添加一个标记来标记 singin
页面:
.when('/signin', {
controller: [$scope, function ($scope) {
$scope.isNormalPage = false;
};
}]
})