解决方案无效并且模板正在加载 - AngularJS

时间:2014-08-25 11:04:30

标签: javascript angularjs resolve ngroute

以下是我的$routeProvider代码 -

  $routeProvider
    .when("/login", {
      template: JST["app/templates/login"],
      controller: "LoginController",
    })
    .when("/dashboard", {
      template: JST["app/templates/dashboard"],
      controller: "DashboardController",
      resolve:{
        getUser: function(UserService) {
          return UserService.chkUser()
        }
      }
    })
    .otherwise({ redirectTo: function() {window.location = "/login";} });

    $locationProvider.html5Mode(true);
});

以下是我的UserService代码 -

angular.module("app").factory("UserService", function($http, $q, User) {
  return {
    chkUser: function() {
      var defer = $q.defer();

      defer.resolve(false);
      return defer.promise;
      // Also tried -
      // window.location = "/login";
    }
  };
});

问题 -

现在,当我在浏览器中导航到http://example.com/dashboard时,我应该以“/ login”身份登录,但我不是,请告诉我错误的resolve使用情况angularJS。

1 个答案:

答案 0 :(得分:1)

好吧,你的决心很好,如果你将getUser注入DashboardController,它的值应该是false。因为您立即使用false值解决了承诺。

尝试这样的事情:

angular.module("app").factory("UserService", function($http, $q, User, $location) {
  return {
    chkUser: function() {
      var defer = $q.defer();
      $http(...., function(user){
         if(user){
            defer.resolve(user);
         }else{
            defer.reject();
            $location.path('/login');
         }
      });
      return defer.promise;
    }
  };
});

或者创建一个复制问题的小提琴,这样我们就可以看看并触摸那个。