Angular 路由和 Bootstrap 导航栏
Angular Routing and Bootstrap Navbar
我在使 bootstrap 导航栏 + angular 路由正常工作时遇到问题。我不明白发生了什么,因为另一个应用程序上的代码非常相似。
我的 index.html
中有以下 html
<div ng-controller="CoreController as core">
<nav class="navbar navbar-default">
<div class="container-fluid">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">myApplication</a>
</div>
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav">
<li ng-class="core.navHome"><a href="#home">Home <span class="sr-only">(current)</span></a></li>
<li ng-class="core.navStatistic"><a href="#statistic">Statistic</a></li>
</ul>
</div>
<!-- /.navbar-collapse -->
</div>
<!-- /.container-fluid -->
</nav>
<!-- angular templating -->
<!-- this is where content will be injected -->
<div ng-view></div>
</div>
我的app.js:
$routeProvider.when('/', { templateUrl: 'templates/home.html', controller: 'MainController', controllerAs: 'main' });
$routeProvider.when('/statistic', { templateUrl: 'templates/statistic.html', controller: 'StatisticController', controllerAs: 'statistic' });
// Default route
$routeProvider.otherwise({ redirectTo: '/' });
当我点击统计数据 link 时,我的 URL 显示:
http://localhost/myApplication/#!/#statistic
然后我看到了主页模板。
然后主页按钮显示“http://localhost/myApplication/#!/”
是#!这是什么原因?
好的,经过一些研究,我发现我的代码适用于 angular < 1.6.
要使上述代码在 1.6 中工作,您必须去掉 #!通过将其添加到配置中:
$locationProvider.hashPrefix('');
这是
我在使 bootstrap 导航栏 + angular 路由正常工作时遇到问题。我不明白发生了什么,因为另一个应用程序上的代码非常相似。
我的 index.html
中有以下 html<div ng-controller="CoreController as core">
<nav class="navbar navbar-default">
<div class="container-fluid">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">myApplication</a>
</div>
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav">
<li ng-class="core.navHome"><a href="#home">Home <span class="sr-only">(current)</span></a></li>
<li ng-class="core.navStatistic"><a href="#statistic">Statistic</a></li>
</ul>
</div>
<!-- /.navbar-collapse -->
</div>
<!-- /.container-fluid -->
</nav>
<!-- angular templating -->
<!-- this is where content will be injected -->
<div ng-view></div>
</div>
我的app.js:
$routeProvider.when('/', { templateUrl: 'templates/home.html', controller: 'MainController', controllerAs: 'main' });
$routeProvider.when('/statistic', { templateUrl: 'templates/statistic.html', controller: 'StatisticController', controllerAs: 'statistic' });
// Default route
$routeProvider.otherwise({ redirectTo: '/' });
当我点击统计数据 link 时,我的 URL 显示: http://localhost/myApplication/#!/#statistic 然后我看到了主页模板。
然后主页按钮显示“http://localhost/myApplication/#!/”
是#!这是什么原因?
好的,经过一些研究,我发现我的代码适用于 angular < 1.6.
要使上述代码在 1.6 中工作,您必须去掉 #!通过将其添加到配置中:
$locationProvider.hashPrefix('');
这是