我在http://localhost:8080/
使用Node.js为Angular应用提供服务。但是,当我在浏览器地址栏中输入此URL时,主页模板不会显示在应用程序内容区域中 - 仅显示顶部导航(这是外壳的一部分)。这是我的路由器配置:
angular
.module('app')
.config(configRouter);
configRouter.$inject = ['$routeProvider'];
function configRouter($routeProvider) {
$routeProvider
.when('/', {
templateUrl: 'home/home.html',
controller: 'Home',
controllerAs: 'vm'
})
.when('/profile', {
templateUrl: 'profile/profile.html',
controller: 'Profile',
controllerAs: 'vm'
})
.otherwise({ redirectTo: '/' });
}
有趣的是,当我点击顶部导航栏中的链接时,会加载正确的模板(包括主页模板)。这是我的顶级导航的代码:
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li class="active"><a href="#/">Home</a></li>
<li><a href="#/profile">Profile</a></li>
</ul>
</div>
我在浏览器地址栏中尝试了各种网址组合,但没有任何效果:
http://localhost:8080/
http://localhost:8080/#
http://localhost:8080/#/
可能是什么问题?从应用程序中调用时,相同的URL是如何工作的?
提前感谢您的时间。
修改
BTW我几乎完全遵循John Papa的AngularJS风格指南示例。这可能与我在shell.html中嵌入的ng-view有关:
<div data-ng-controller="ShellController as vm">
<div data-ng-include="'layout/topnav.html'"></div>
<section id="content" class="content">
<div data-ng-view class="shuffle-animation"></div>
</section>
</div>
但他的确如此 - 请参阅here。
答案 0 :(得分:0)
我遇到了类似的问题。
我在ng-view
中使用main.html
并将其加载到index.html
(这是第一个加载的文件)
然后路由(控制器)没有从网址激活,但当我点击我的应用程序中的链接时,它工作。
然后我从ng-view
移动main.html
并直接放在index.html
,然后它也从网址开始工作。
希望这有帮助。
答案 1 :(得分:0)
您可能需要为网页上的所有相关脚本指定基本网址:
<head>
<base href="http://www.companyXYZ.com/scripts/" target="_blank">
有关基本标记的更多信息,请参见here。
答案 2 :(得分:0)
这是angular-router的一个已知问题:https://github.com/angular/angular.js/issues/1213。讨论提出了一个不太好的解决方法。据我所知,angular-ui-router有同样的问题 - 请参阅这里的一些细节:https://github.com/johnpapa/generator-hottowel/issues/22。目前,最好的解决方案是避免使用ng-include嵌套ng-view。