【问题标题】:resolve is not working and template is loading - AngularJS解析不起作用并且正在加载模板 - AngularJS
【发布时间】:2014-08-25 11:04:29
【问题描述】:

以下是我的$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”处重新登录,但我没有,请告诉我我对 angularJS 中的 resolve 用法有什么问题。

【问题讨论】:

  • 使用 $location.path('/login') 代替 window.location

标签: javascript angularjs resolve ngroute


【解决方案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;
    }
  };
});

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

【讨论】:

  • 这只是一个取自您的代码的变量名。您正在仪表板路线中解决它:.when("/dashboard", {..., resolve:{ getUser: ...}}
  • 如果你将它注入控制器,你将在你的路由控制器中得到它的解析值:angular.module('app').controller('DashboardController, function($scope, getUser){ console.log(getUser); });
  • 哦,我的错 :( 迷路了 :) 让我试试这个
猜你喜欢
  • 1970-01-01
  • 2015-10-02
  • 2019-05-31
  • 2013-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多