Angular Js正在从URL中删除子目录

时间:2015-02-01 14:17:31

标签: angularjs joomla angularjs-scope angular-ui-router angular-routing

我已将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会这样做?

1 个答案:

答案 0 :(得分:2)

这种情况正在发生,因为您已通过指定$locationProvider.html5Mode(true)指示Angular不使用hashbang网址。删除或以其他方式注释掉该代码段,如果您在根模板文件中指定了<base href="/">,请删除或注释掉该代码片段,只使用ngRoute而不使用这些代码片段。