AngularJS否则无效

时间:2016-08-15 11:24:56

标签: angularjs

我想在此代码中向您寻求帮助。

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不起作用,为什么不呢?

1 个答案:

答案 0 :(得分:2)

此错误来自服务器,而不是来自角度。您需要将服务器配置为index.html页面提供此“不存在”的地址(以及所有现有地址,BTW。阅读Understanding what it takes to remove the hash # from angular routes)。

如果没有HTML页面且根本没有应用程序,Angular将无法执行任何操作。从服务器加载index.html后,角度应用程序将启动,将检查URL是什么,将检测到它与任何路由不匹配,然后将重定向到主页。