我正试图摆脱出现在我的 ui-router URL 中的主题标签。 ( http://localhost:3000/email 不起作用,但 http://localhost:3000/#email 起作用。在搜索 SO 之后,我还没有找到适合我的案例。我现在在本地运行,所以我假设我不需要任何“服务器配置"并且我在我的 index.html 中包含了 ""。

(function(angular) { 
    'use strict'; 
    angular.module('myApp', ['ui.router']) 
 
 
 
    .controller('MainController', function($scope, $route, $routeParams, $location) { 
        $scope.$route = $route; 
        $scope.$location = $location; 
        $scope.$routeParams = $routeParams; 
    }) 
 
    .config([ 
            ['$stateProvider', '$locationProvider', '$urlRouterProvider', function($stateProvider, $urlRouterProvider, $locationProvider, $provide) { 
 
                $urlRouterProvider.otherwise('/email'); 
 
                // PAGES 
 
                $stateProvider 
 
                    .state('email', { 
                    url: '/email', 
                    templateUrl: '../pages/email.html', 
                    controller: 'EmailController' 
                }) 
 
                .state('about', { 
                    url: '/about', 
                    templateUrl: '../pages/about.html', 
                    controller: 'AboutController' 
                }) 
 
                // ... the rest... 
 
                $locationProvider 
                    .html5Mode(true); // enable html5Mode for pushstate ('#'-less URLs DOESN'T WORK) 
                    .hashPrefix('!'); 
 
                $provide.decorator('$sniffer', function($delegate) { 
                    $delegate.history = false; 
                    return $delegate; 
                }); 
 
            }]); 

请您参考如下方法:

您可以在运行 block 中执行此操作:

$locationProvider.html5Mode({ 
    enabled: true, 
    requireBase: false 
}); 

并且您的网址将从 domain.com/#foo 更改为 domain.com/foo(这不需要明确的基础)。

...或在您的运行 block 中执行此操作:

$locationProvider.html5Mode(true); 

...然后将其添加到您的 html <head> :

<base href="/"> 

此解决方案提供与第一个相同的结果,只是现在有一个指定的基数。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!