angular url正在添加不需要的字符

时间:2016-12-12 22:43:49

标签: angularjs angular-routing

我有一个项目,通过转到

,本地工作的URL工作正常
  

localhost:9000 /

网址将变为

  

http://localhost:9000/#/

我做了一些改变,现在转到

  

http://localhost:9000/#!/(带有感叹号)

此外,其他网址变得怪异。如果我尝试点击一个链接,例如,转到仪表板。它不需要我。相反,它使URL像

  

/#!/#%2Fdashboard

之后没有任何反应。我做错了什么,怎么可能解决这个问题?我不能显示任何代码,因为我不知道我哪里出错了。我按照以下教程,然后发生了问题。也许错误就在那里?

tutorial link

我添加了我的.config,我设置了路线。

  .config(function ($routeProvider, $httpProvider) {
$routeProvider
  .when('/', {
    templateUrl: 'views/main.html',
    controller: 'MainCtrl',
    controllerAs: 'vm',
    activetab: 'main'
  })
  .when('/about', {
    templateUrl: 'views/about.html',
    controller: 'AboutCtrl',
    controllerAs: 'vm',
    activetab: 'about'
  })
  .when('/faq', {
    templateUrl: 'views/faq.html',
    controller: 'FaqCtrl',
    controllerAs: 'vm',
    activetab: 'faq'
  })
  .when('/dashboard', {
    templateUrl: 'views/dashboard.html',
    controller: 'DashboardCtrl',
    controllerAs: 'vm',
    activetab: 'dashboard'
  })
  .when('/logout', {
    templateUrl: 'views/main.html',
    controller: 'LogoutCtrl',
    controllerAs: 'vm'
  })
  .otherwise({
    redirectTo: '/'
  });
  $httpProvider.interceptors.push(['$q', '$window', '$localStorage', function($q, $window, $localStorage) {
    return {
      'request': function (config) {
        config.headers = config.headers || {};
        if ($localStorage.globals) {
          config.headers.access_token = $localStorage.globals.currentUser.token;
        }
        return config;
      },
      'responseError': function(response) {
        switch(response.status) {
          case 403:
            //$window.location = '/'
            break;
          case 404:
            //$window.location = './404.html';
            break;
          case 500:
            $window.location = './500.html';
            break;
        }
        return $q.reject(response);
      }
    };
  }]);

3 个答案:

答案 0 :(得分:9)

这实际上不是一个错误。

请参阅commit-aa077e8

用于$ location hash-bang网址的默认哈希前缀已从空字符串('')更改为bang ('!')

如果您确实不想使用hash-prefix,则可以通过向应用程序添加配置块来恢复以前的行为:

appModule.config(['$locationProvider', function($locationProvider) {
  $locationProvider.hashPrefix('');
}]);

答案 1 :(得分:1)

我已成功使用

解决了这个问题
$locationProvider.hashPrefix('');

这似乎是1.6.0 angularjs中的一个错误

答案 2 :(得分:0)

可以确认这是Angular 1.6.0中的错误。修复了我自己的同样问题,回到Angular 1.5.9。