AngularJS路由网址删除了这个"#!"

时间:2015-06-05 13:09:27

标签: javascript angularjs

我的网址是localhost / kaiweb / #! /我想删除#34;#!"或任何可能导致这种情况。另一个例子是localhost / kaiweb /#!/ minust - 它介于两者之间并且看起来不漂亮。

  <li><a id="mainBtn" href="#!/" ng-class="{activeSmall:part == 'index'}" >Avaleht</a></li>
  <li><a id="aboutBtn" href="#!/minust" ng-class="{activeSmall:part == 'minust'}">Minust</a></li>
  <li><a id="workBtn" href="#!/portfoolio" ng-class="{activeSmall:part == 'portfoolio'}" >Portfoolio</a></li>
  <li><a id="vouchBtn" href="#!/teenused" ng-class="{activeSmall:part == 'teenused'}" >Teenused</a></li>

AngularApp

'use strict';

var app = angular.module('kaidoweb', []).
    config(['$routeProvider', function ($routeProvider) {
      $routeProvider.
        when('/', {
         templateUrl: 'pages/index.html',
         activetab: 'index',
         controller: HomeCtrl 
       }).
        when('/portfoolio', {
          templateUrl: 'pages/works.html',
          controller: PrivacyCtrl,
          activetab: 'portfoolio'
        }).
        when('/minust', {
          templateUrl: 'pages/about.html',
          controller: AboutCtrl,
          activetab: 'minust'
        }).
          when('/teenused', {
          templateUrl: 'pages/teenused.html',
          controller: TeenusedCtrl,
          activetab: 'teenused'
        }).
        otherwise({ redirectTo: '/' });
    }]).run(['$rootScope', '$http', '$browser', '$timeout', "$route", function ($scope, $http, $browser, $timeout, $route) {

        $scope.$on("$routeChangeSuccess", function (scope, next, current) {
          $scope.part = $route.current.activetab;
        });

我猜这是一件很简单的事情,但我对角度很新。

1 个答案:

答案 0 :(得分:1)

您必须了解Angular不是服务器端进程。您可以调整html5mode,但这仅适用于页面的html锚点中包含的链接以及网址在浏览器地址栏中的显示方式。尝试从页面外的任何位置请求没有主题标签(带或不带html5mode)的子页面将导致404错误。例如,以下CURL请求将导致页面未找到错误,无论html5mode如何:

$ curl http://foo.bar/portfolio

虽然以下内容将返回root / home页面:

$ curl http://foo.bar/#/portfolio

因此,如果您想与他人共享网址,则除了包含主题标签外别无选择;除非您决定使用某种类型的服务器端路由。