我正在查看Angular的教程,我正试图摆脱URL中的哈希值。
我已经尝试将html5模式设置为true。但它似乎没有正确路由。
控制台说:
GET http://localhost:8000/partials/phone-list.html 404 (Not Found)
这是我的应用程序中的代码:
var phonecatApp = angular.module('phonecatApp', [
'ngRoute',
'phonecatControllers'
]);
phonecatApp.config(['$routeProvider', '$locationProvider',
function($routeProvider, $locationProvider) {
$routeProvider.
when('/phones', {
templateUrl: 'partials/phone-list.html',
controller: 'PhoneListCtrl'
}).
when('/phones/:phoneId', {
templateUrl: 'partials/phone-detail.html',
controller: 'PhoneDetailCtrl'
}).
otherwise({
redirectTo: '/phones'
});
$locationProvider.html5Mode(true);
}]);
我目前正在使用localhost并使用node来提供页面。
编辑: 我已经阅读了这个问题:Removing the fragment identifier from AngularJS urls (# symbol) 但是我的应用似乎有相同的代码。不确定我错过了什么?
答案 0 :(得分:0)
不要忘记在服务器上提供/partials/phone-list.html
路由的页面。不仅仅是index.html(或者你拥有的任何东西)。推送状态(html5-mode)仅在您启动应用程序时有效,否则浏览器如何知道在您发出新请求时从哪里获取javascript?
Hashbang网址不同,因为您实际上是在向同一地址发出请求,因此无需在服务器上进行任何更改。
编辑,同时通过查看第一个答案确保您的链接正常工作 ngRoute set base url for all routes