[英]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.