使用 ng-route 处理 hashbang url

handling hashbang url with ng-route

我正在使用 location.path 像

一样导航
$location.path('#/foo');

在应用程序中,我正在使用像

这样的路线提供商
var app = angular.module("myApp", ['ngRoute'])
    .config(function($routeProvider){
    $routeProvider
    .when("/foo",{
        templateUrl: "templates/foo.html",
        controller: "fooController"
    })
    .otherwise({
    template : "<h1>None</h1><p>Nothing has been selected</p>"
    });
   });

但不是像

那样生成 url
http://localhost:8001/#/foo

location.path遍历到

http://localhost:8001/#/%23/foo

因此 routeprovider 正在加载模板,而不是所需的模板不会加载。我如何检查

$location.path('#/foo'); 中的路线中删除明确的 # 并将其更改为 $location.path('/foo');

因为 angular 本身在路由期间附加 # tag,这已经在你的问题 http://localhost:8001/#/%23/foo 中看到,当你给出明确的一个时,它会编码为 %23

只需删除您在 $location.path() 中输入的#。默认情况下已经添加。

$location.path('/foo');