Angular 1 Base href和路由/视图/控制器

时间:2017-07-20 18:16:47

标签: javascript angularjs angular-routing

我希望在我的webapp中添加一个基本href。目前运行时一切都正常运行:

  • 本地主机:3000 /#/登录

但我需要添加基础href或"充电" - >本地主机:3000 /充电/#/登录

当前index.html

<head>
<base href="charge/" />
<meta charset="utf-8">
<meta name="description" content="">
<meta name="viewport" content="width=device-width">
<link rel="stylesheet" .... 
</head>

Anuglar路线档案

function routerConfig($routeProvider, $locationProvider) {
$routeProvider
  .when('/map', {
    templateUrl: 'app/views/main/main.html',
    controller: 'MainController',
    controllerAs: 'mainCtrl'
  })
  .when('/login', {
    templateUrl: 'app/views/login/login.html',
    controller: 'LoginController',
    controllerAs: 'loginCtrl'
  })
  .when('/list', {
    templateUrl: 'app/views/list/list.html',
    controller: 'ListController',
    controllerAs: 'listCtrl'
  })
  .when('/reporting', {
    templateUrl: 'app/views/reporting/reporting.html',
    controller: 'ReportingController',
    controllerAs: 'reportingCtrl'
  })
  .otherwise({
    redirectTo: '/map'
  });
// $locationProvider.html5Mode(true);
}

每当我使用basehref运行我的应用程序并导航到localhost:3000 / charge /#/ login时,基本上找不到每个视图,控制器,bower组件和模块。我已经尝试编辑路由器,更改主应用程序文件夹的名称,但无法使其工作。我知道我错过了一些小的东西,所以非常感谢任何帮助!

我的问题似乎与Base Href and Angular Routing and Views非常相似,但老实说,我无法弄清楚这一点。

2 个答案:

答案 0 :(得分:2)

如果您正在使用Chrome并且在开发者控制台中查看,请查看无法找到的资源的网址:

http://localhost:8080/charge/app.js

它正在查看项目的根目录,然后查找名为charge的文件夹,然后查找资源。

  

HTML元素指定用于所有亲属的基本URL   文档中包含的URL。只能有一个元素   在一份文件中。 - MDN

您能告诉我们您的目录结构在这里是什么样的吗?如果您的项目文件直接在root中,请尝试创建名为&#34; charge&#34;的子文件夹。并将所有文件放入其中。

示例: root&gt;充电&gt;项目文件

有用的链接:AngularJS: Changing App Path, and the Element

答案 1 :(得分:0)

尝试预先添加&#34; /&#34;在所有源URL之前。这将从项目的根目录开始每个路径,而不是在您的基础href。

e.g。 templateUrl: '/app/views/main/main.html'