首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >$state.go未重定向到页面

$state.go未重定向到页面
EN

Stack Overflow用户
提问于 2017-06-05 05:37:11
回答 1查看 669关注 0票数 0

我正在为已经有一个网站的人登录和注册工作。不知道这是否重要,但index.html是登录页面,我单击登录转到登录页面。该项目的其余部分不是web应用程序的一部分,到目前为止,只有登录和注册(index.html没有任何angularjs代码,也没有加载任何控制器或app.js)。

登录时,服务器会返回一个响应,但它不会转到test页面,但是url会从http://express.app/dashboard/login.html#!/更改为http://express.app/dashboard/login.html#!/test。我不知道为什么要在第一个地方添加#!/。但是,如果我查看我的网络控制台,我可以看到test.html正在加载,如果我查看预览,我可以看到页面。

我尝试了许多不同的组合,比如将templateURL设置为dashboard/test.html,然后将其保留为/test.html,但似乎都不起作用。我做错了什么?

app.js

代码语言:javascript
复制
angular.module('app',['angular-jwt','angular-storage', 'ngRoute', 'ui.router'])
  .config(function  ($stateProvider, $urlRouterProvider, jwtInterceptorProvider, $httpProvider, jwtOptionsProvider) {
  $urlRouterProvider.otherwise('/');
  $stateProvider
      .state("login", {
          url:"/login",
          controller: "loginController",
          templateUrl: "dashboard/login.html"
      })
      .state("signup", {
          url:"/signup",
          controller: "signupController",
          templateUrl: "dashboard/register.html"
      })
      .state("test", {
          url:"/test",
          controller: "testController",
          templateUrl: "test.html"
      });

  jwtInterceptorProvider.tokenGetter = function (store) {
      return store.get('jwt');
  };
      jwtOptionsProvider.config({
          whiteListedDomains: ['express.api', 'localhost']
  });

  $httpProvider.interceptors.push('jwtInterceptor');
})
  .run(function($rootScope, $state, store, jwtHelper) {
  $rootScope.$on('$stateChangeStart', function(e, to) {
      if (to.data && to.data.requiresLogin) {
          if (!store.get('jwt') || jwtHelper.isTokenExpired(store.get('jwt'))) {
              e.preventDefault();
              $state.go('login');
          }
      }
});

login.Controller.js

代码语言:javascript
复制
'use strict';

angular.module('app')
  .controller('loginController', function ($scope, $http, $state, store) {
  $scope.user = {};
  $scope.login = function() {
      $http({
          url: 'http://expressapi.com/login',
          method: 'POST',
          data: $scope.user
      }).then(function(response) {
          console.log("res", response.data.token);
          store.set('jwt', response.data.token);
          var test1 = store.get('jwt');
          console.log("get", test1);
          $state.go("test");
      }, function(error) {
          console.log(error);
          alert(error);
      });
  }
});

test.js

代码语言:javascript
复制
'use strict';

angular.module('app')
  .controller('testController', function ($scope, $http, $state, store) {
     console.log("TEst");
      $scope.test = function() {
      }
});

login.html

代码语言:javascript
复制
<body class="main" ng-app="app" ng-controller="loginController">
  <div class="form" data-ix="new-interaction-2">
    <label class="field-label" for="Name-2">Email</label>
      <input class="text-field-2 w-input" data-name="name" id="Name-2" maxlength="256" name="name" placeholder="Email" required="required" type="email" ng-model="user.email">
    <label for="Password-2">Password:</label>
      <input class="text-field w-input" data-name="Password" id="Password-2" maxlength="256" name="Password" placeholder="Password" required="required" type="password" ng-model="user.password">
  </div>
</div>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js" type="text/javascript"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.4/angular.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-router/1.0.3/angular-ui-router.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-messages/1.6.4/angular-messages.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-storage/0.0.15/angular-storage.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.1/angular-route.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular-resource.js" type="text/javascript"></script>
<script src="/app.js"></script>
<script src="/node_modules/angular-jwt/dist/angular-jwt.js"></script>
<script src="/Controllers/loginController.js"></script>
<script src="/Controllers/testController.js"></script>

test.html

代码语言:javascript
复制
<body ng-app="app" ng-controller="testController">
Worked!

<script src="../js/express.js" type="text/javascript"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.4/angular.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-router/1.0.3/angular-ui-router.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-messages/1.6.4/angular-messages.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-storage/0.0.15/angular-storage.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.1/angular-route.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular-resource.js" type="text/javascript"></script>

<script type="application/javascript" src="../app.js"> </script>
<script src="../node_modules/angular-jwt/dist/angular-jwt.js"></script>
<script src="../controllers/loginController.js"></script>
<script src="../controllers/testController.js"></script>
<script src="../controllers/signupController.js"></script>
</body>

文件夹结构

代码语言:javascript
复制
/
controllers
 -loginController.js
 -testController.js
app.js
index.html
contact.html
info.html
dashboard
  -login.html
  -test.html
EN

回答 1

Stack Overflow用户

发布于 2017-06-06 05:27:04

如果希望使用UI路由器进行重定向,则需要将login.js功能移动到loginController文件。这是login.html中的标记附加到的控制器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44359023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档