我想在此代码中向您寻求帮助。
app.config(function ($locationProvider, $routeProvider) {
$locationProvider.html5Mode({
enabled: true,
requireBase: false
});
$routeProvider
.when("/", {
templateUrl: "views/home.html",
controller: "HomeController"
}).when("/login", {
templateUrl: "/views/login.html",
controller: "LoginController"
}).when("/register", {
templateUrl: "/views/register.html",
controller: "RegisterController"
}).when("/users", {
templateUrl: "/views/admin/users.html",
controller: "UserController",
requiresAuth : true
}).otherwise({
redirectTo: "/"
});
}).run(function($rootScope, Session) {
$rootScope.$on("$routeChangeStart", function(event, next, current) {
if (next.requiresAuth && !Session.getIsAdmin()) {
alert("You are not authorized");
event.preventDefault();
}
});
});
当我去不存在的地址时,显示错误:
Error: No default engine was specified and no extension was provided.
,所以否则param不起作用,为什么不呢?
答案 0 :(得分:2)
此错误来自服务器,而不是来自角度。您需要将服务器配置为index.html页面提供此“不存在”的地址(以及所有现有地址,BTW。阅读Understanding what it takes to remove the hash # from angular routes)。
如果没有HTML页面且根本没有应用程序,Angular将无法执行任何操作。从服务器加载index.html后,角度应用程序将启动,将检查URL是什么,将检测到它与任何路由不匹配,然后将重定向到主页。