javascript - 解析不起作用,模板正在加载 - AngularJS

标签 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”处重新登录,但我没有,让我知道我对 angularJS 中的 resolve 用法有什么错误。

最佳答案

好吧,您的解析工作正常,如果您将 getUser 注入(inject) DashboardController,它的值应该是 false。因为您立即用 false 值解决了 promise 。

尝试这样的事情:

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;
    }
  };
});

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

关于javascript - 解析不起作用,模板正在加载 - AngularJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25484493/

相关文章:

angularjs - 列出在 AngularJS 中注册的自定义指令

java - 访问被拒绝 ("java.net.SockerPermission" "irc.esper.net" "resolve")

javascript - MongoDB/ Mongoose : Updating entire document with findOneAndUpdate()

javascript - AngularJS - $interpolate 与 $filter

Javascript - 函数/闭包变量范围 - 变量定义在哪里?

android-layout - 导入什么来解决 "LayoutParams cannot be resolved to a variable"?

Webpack resolve.alias 特定于操作系统的错误

javascript - 单击模式“同意”按钮时未选中复选框

javascript - 访问 Angular 中对象内部数组中的对象

css - 插入文本后如何更改md-input-container标签的标签颜色