我已将Angular App安装在以下位置:
http://example.com/my-app
我的应用程序路由是这样的:
var myApp = angular.module('myApp', ['ngRoute','ngAnimate', 'ui.bootstrap', 'angularFileUpload']);
myApp.config(['$routeProvider', function($routeProvider) {
$routeProvider
.when('/templates', {
controller: 'TemplatesController',
templateUrl: '/components/com_myApp/myApp/views/templates/template-list.html'
})
.when('/apps', {
controller: 'AppController',
templateUrl: '/components/com_myApp/myApp/views/apps/app-list.html'
})
.otherwise({
redirectTo: '/templates'
});
}]);
现在发生的情况是,当我转到http://example.com/my-app
时,网址显示为http://example.com/my-app#/templates
而不是显示http://example.com/templates
似乎otherwise
条件基本上是从网址中删除基目录my-app#
。我一直在摸不着头脑,在阅读之后我还尝试在head标签中添加基本网址并尝试将myApp.config
更改为:
myApp.config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) {
$locationProvider.html5Mode(true);
....
}
但是虽然如上所述使用$locationProvider
时路由似乎有效,但基本网址仍未显示我想要的方式。网址在网址路径中显示为http://example.com/templates
,而my-app
没有http://example.com/my-app/..xyz...
。我不希望Angular从URL中删除基本路径,我希望网址显示为{{1}}
为什么Angular会这样做?
答案 0 :(得分:2)
这种情况正在发生,因为您已通过指定$locationProvider.html5Mode(true)
指示Angular不使用hashbang网址。删除或以其他方式注释掉该代码段,如果您在根模板文件中指定了<base href="/">
,请删除或注释掉该代码片段,只使用ngRoute
而不使用这些代码片段。