我有一个模块化应用程序,我将路由分成多个文件。
所以我的系统是。
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文件看起来像这样的用户模块
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页面。注册页面是页面历史记录堆栈的一部分,因为我可以使用硬件后退按钮“回”到它,或者在测试期间按回铬。我尝试将路由移回主路由文件,而不是注入用户路由,但它产生了相同的结果。
============== EDIT ============= 一旦应用程序加载,如果我更改页面,它将在主页面之后转到注册页面,并将链接添加回登录页面,这种情况不会发生。我只是对不同的东西感到困惑。
答案 0 :(得分:0)
设置otherwise
.config(function($stateProvider, $urlRouterProvider) {
$urlRouterProvider.otherwise('/defaultpage');
.state('login', {
url: '/login',
templateUrl: 'templates/template.html',
controller: 'Ctrl'
})
.otherstates etc....
});
答案 1 :(得分:0)
我明白我做错了什么。在我有我的按钮的位置,它应该带我到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>