繁体   English   中英

Angular UI Router重定向到默认页面

[英]Angular UI Router redirecting to default page

我有一个模块化的应用程序,其中的路由分为多个文件。

我的系统就是这样。

Top
--Main.Module.js
--Main.Routes.js
--Main.Controllers.js
--Main.html
--user (folder)
----User.Module.js
----User.Routes.js
----User.Controllers.js

在用户文件夹中,我有一个带Login.html的登录文件夹和一个带Register.html的注册文件夹。

主模块文件如下所示

angular.module('Main', ['ionic', 'Main.Routes', 'Main.Controllers', "User"])

  .run(function($ionicPlatform) {
    $ionicPlatform.ready(function() {
      // Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
      // for form inputs)
      if (window.cordova && window.cordova.plugins.Keyboard) {
        cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
        cordova.plugins.Keyboard.disableScroll(true);

      }
      if (window.StatusBar) {
        // org.apache.cordova.statusbar required
        StatusBar.styleDefault();
      }
    });
  });

主路由文件包含

angular.module('Main.Routes', [])

.config(function($stateProvider, $urlRouterProvider) {
  $stateProvider

    .state('Loader', {
      url: '/',
      templateUrl: '/views/Main.html',
      controller: 'MainController'
    });

   $urlRouterProvider.otherwise('/');
});

然后Main.Module.js注入这两件事以及js文件如下所示的User模块

angular.module('User', ['User.Controllers', 'User.Services', 'User.Routes']);

用户路由文件具有登录页面和注册页面的路由

angular.module('User.Routes', [])

.config(function($stateProvider) {
  $stateProvider

    .state('Login', {
      url: '/user/login',
      templateUrl: 'views/user/login/Login.html',
      controller: 'LoginController'
    })

    .state('Register', {
      url: '/user/register',
      templateUrl: 'views/user/register/Register.html'

    });



  // if none of the above states are matched, use this as the fallback


});

当我从主控制器执行$ state.go(“ Login”)时,它将带我进入登录页面,而没有任何问题。 但是我在登录页面上有一个注册按钮,它与此代码块相关联

//Move user to the register page
  $scope.registerClick = function(){
    $state.go("Register");
  }

这会将我重定向到注册页面大约半秒钟,然后立即将其踢回到html主页。 所以我的问题是我需要知道为什么状态不停留在注册页面上,而是立即移动到main.html页面。 注册页面是页面历史记录堆栈的一部分,因为我可以在测试过程中使用硬件后退按钮或在chrome上按回“返回”它。 我尝试将路由移回主路由文件,而不注入用户路由,但结果相同。

===============================一旦应用程序加载,如果我更改页面,它将转到主页面之后到寄存器页面,然后将链接添加回登录页面不会发生此现象。 我只是对不同之处感到困惑。

设置一个otherwise

.config(function($stateProvider, $urlRouterProvider) {
            $urlRouterProvider.otherwise('/defaultpage');
        .state('login', {
                    url: '/login',
                    templateUrl: 'templates/template.html',
                    controller: 'Ctrl'
                })
        .otherstates etc....

        });

我知道我做错了。 在我应该将按钮带到ng-click指令旁边的注册页面的位置,我还将href指令设置为#。 谢谢大家的投入。

冒犯线

<a href="#" ng-click="registerClick()" class="button button-light  button-block button-clear ">Create an account</a>

应该是什么

<a href="#" ng-click="registerClick()" class="button button-light  button-block button-clear ">Create an account</a>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM