我使用$ 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" })
});
这些是我的路线的样子
但我希望它们看起来像
答案 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。