在angularjs应用程序中散列(#!)后的感叹号

Sup*_*shi 37 angularjs

我刚注意到在我的所有路线中都有哈希(#!)之后我有感叹号,我不知道我是如何以及为什么我得到它们因为今天我没有它们,是否有任何解决方案可以摆脱它们如果有人能解释我是什么,以及我是如何得到的,我将不胜感激.因此,到目前为止我找到的解决方案只是在我的应用程序中的每个href上手动设置感叹号,但是这让我烦恼,我不知道该怎么做.我使用yeoman生成器生成了我的应用程序,我的app.js看起来像这样

angular
  .module('appNameApp', [
    'ngAnimate',
    'ngCookies',
    'ngResource',
    'ngRoute',
    'ngSanitize',
    'ngTouch'
  ])
  .config(function ($routeProvider) {
    $routeProvider
      .when('/', {
        templateUrl: 'views/main.html',
        controller: 'MainCtrl',
        controllerAs: 'main'
      })
      .when('/about', {
        templateUrl: 'views/about.html',
        controller: 'AboutCtrl',
        controllerAs: 'about'
      })
      .when('/jaspo', {
        templateUrl: 'views/about.html',
        controller: 'jaspoCtrl',
        controllerAs: 'vm'
      })
      .otherwise({
        redirectTo: '/'
      });
  });
Run Code Online (Sandbox Code Playgroud)

Skr*_*rew 85

修改这两行:

  .config(function ($routeProvider) {
$routeProvider
Run Code Online (Sandbox Code Playgroud)

成为 :

    .config(function ($routeProvider,$locationProvider) {
    $locationProvider.hashPrefix('');
    $routeProvider
Run Code Online (Sandbox Code Playgroud)

信用应该转到:https://stackoverflow.com/a/41223197/1564146

  • !被放入网址以避免像'url /#'这样的空哈希被识别为锚点并使页面显示为顶部 (5认同)
  • 谢谢,我会尝试一下,你知道为什么我有原因!#?之后?我不熟悉它,不知道这意味着什么 (2认同)
  • 您回答这个问题已有好几年了...但是我正处于Angular升级的过程中,已从旧的1.48 / 5.8代码移至1.6.x领域,这突然对我来说就像是瘟疫... A不错的Google,而我登陆了这里,您的回答为我节省了很多时间,甚至可能使我头疼。如果您发现自己在西雅图,那么第一轮就在我身上。 (2认同)

She*_*eki 28

你可能会将角度版本从1.5更新到1.6,因为在1.6上,角度团队决定将默认的$ location hash-prefix更改为'!'.像@Skrew建议的那样,您可以将其更改为''$locationProvider.hashPrefix('');

在这里你可以读到这一点.