我遇到了一些与AngularJs路由相关的麻烦。我已经尝试在线寻找答案,但我仍然不清楚所提供的解决方案。
首先,这是我的路由块:
var myApp = angular.module('myApp', ["ngRoute", "ngAnimate"]);
myApp.config(function($routeProvider, $locationProvider) {
$locationProvider.html5Mode(true);
$routeProvider
.when("/", {
templateUrl: "../view/home.html",
controller: "slideShowController",
})
.when("/business&consumer", {
templateUrl: "../view/govnservices.html",
controller: "productController",
})
.when("/about", {
templateUrl: "../view/about.html",
controller: "pagController",
})
.when("/project", {
templateUrl: "../view/projects.html",
controller: "projController",
})
.when("/service", {
templateUrl: "../view/services.html",
controller: "servController",
})
.otherwise({
redirectTo: '/',
})
});
这就是我将引用传递给我的链接的方式:
<a href="/">Home</a>
另一个链接:
name: "About Us",
templateUrl: "/about",
现在到处都指定为:
<a href="#/">Home</a>
但是在使用'#'时,我的链接无效(仍然不知道为什么。)
再次没有使用'#'我的所有链接都正常工作,但如果我尝试重新加载我的页面,则会出现404错误:找不到页面。
有人请帮我解决这个问题,如果有任何部分不清楚,请在评论中提及。另外请提及任何学习路由的好资料。
答案 0 :(得分:0)
你的问题并不完全清楚:“再次没有使用'#'我的所有链接都正常工作,但如果我尝试重新加载我的页面,则会出现404错误:找不到页面。”
你是否正在使用#或不?既然我们正在谈论html5mode,我现在不会假设(因为你不得在那种模式下使用它)......
所以我假设你看到的症状是你
听起来不错?如果是这样......问题是你的服务器而不是AngularJS路由......
这是从服务器角度发生的事情:
解决方案是您需要将主页作为后备路由发送...您可能不会安装某些过滤器,以便父路由“api”下的未知路由可能仍会失败404等...
但它的本质是服务器不知道响应“http://wheremyappishosted/about”的内容,所以你需要配置它以便它知道。