$ stateProvider angular add' /#'到我的路线

时间:2016-06-25 00:46:47

标签: angularjs node.js routing

我使用$ stateProvider来处理我在Angular 1中的路由,并且我很困惑为什么我的路由在它们全部启动之前都有/#。我不会介意但是当我在Postman中测试这些路线时,路线会返回404错误。我想知道为什么/#为我的路由添加并摆脱它,以便我可以将我的前端连接到节点中的后端。我对使用带有节点的角度有点新意,所以我不确定我是否正确地解释了我的问题。

这是我的代码

app.config(function($stateProvider, $urlRouterProvider){

$urlRouterProvider.otherwise("/main");    

$stateProvider
        .state("main", { url: "/main", templateUrl: "templates/main/main.view.html", controller: "MainCtrl" })
        .state("map", { url: "/map", templateUrl: "templates/map/map.view.html", controller: "MapCtrl" })
});

这些是我的路线的样子

http://localhost:8080/#/main

http://localhost:8080/#/map

但我希望它们看起来像

http://localhost:8080/main

http://localhost:8080/map

2 个答案:

答案 0 :(得分:2)

要摆脱#/,您必须在其中一个配置文件中设置$locationProvider.html5Mode(true);

 angular.module('app', []).config(function ($locationProvider) {
    $locationProvider.html5Mode(true);
 });

有关html5模式与hashbang模式的更多信息,请查看官方角度documentation

请注意一点,在html5模式下,如果没有一些服务器端网址重新路由,您的应用可能无法正常处理页面刷新。其中一个堆栈溢出帖子中的更多信息:Reloading the page gives wrong GET request with AngularJS HTML5 mode

答案 1 :(得分:1)

男人,只要按照这里的建议,它就会好起来的。 Removing the fragment identifier from AngularJS urls (# symbol)。 还有一个有用的链接https://docs.angularjs.org/guide/$location