Ionic framework 如何在弹出确认后导航到其他页面
我正在尝试在ionic for mobile应用程序中创建一个登录页面,在用户输入一些ID和密码后,它将导航到另一个页面。我尝试使用state.go和location.path,但不起作用。代码如下:Ionic framework 如何在弹出确认后导航到其他页面,ionic-framework,Ionic Framework,我正在尝试在ionic for mobile应用程序中创建一个登录页面,在用户输入一些ID和密码后,它将导航到另一个页面。我尝试使用state.go和location.path,但不起作用。代码如下: angular.module('app.controllers', ['ionic','ui.router']) .controller('loginCtrl', function($scope, $ionicPopup, $state) { $scope.data ={}
angular.module('app.controllers', ['ionic','ui.router'])
.controller('loginCtrl', function($scope, $ionicPopup, $state) {
$scope.data ={};
$scope.submitData = function(){
if($scope.data.email && $scope.data.password){
var alertPopup = $ionicPopup.alert({
title: "Login Succesful",
template: "Welcome Back "
});
$state.go('stateHome');
}else{
var alertPopup = $ionicPopup.alert({
title: "Login Failed",
template: "Please check your credentials"
});
}
}
})
app.config(function($stateProvider, $urlRouterProvider) {
$stateProvider
.state('stateHome', {
url: '/Home',
views: {
'Home' :{
templateUrl : "templates/Home.html",
controller : 'HomeCtrl'
}
}
});
$urlRouterProvider.otherwise('/Setting');
})
My app.js包含:
angular.module('app', ['ionic', 'app.controllers', 'app.routes', 'app.services', 'app.directives'])
.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);
}
if(window.StatusBar) {
// org.apache.cordova.statusbar required
StatusBar.styleDefault();
}
});
})
你知道如何解决这个问题吗?试着按如下方式修改你的文件。它应该会起作用。如果你感到困惑,我可以详细说明 app.js
angular.module('app', ['ionic', 'app.controllers', 'app.routes', 'app.services', 'app.directives'])
.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);
}
if(window.StatusBar) {
// org.apache.cordova.statusbar required
StatusBar.styleDefault();
}
});
})
.config(function($stateProvider, $urlRouterProvider){
$stateProvider
.state('stateHome', {
url: '/Home',
templateUrl: 'templates/Home.html',
controller: 'HomeCtrl'
})
$urlRouterProvider.otherwise('/Setting');
})
controllers.js
angular.module('app.controllers', [])
.controller('loginCtrl', function($scope, $ionicPopup, $state, $location) {
$scope.data ={};
$scope.submitData = function(){
$scope.goToHomePage = function () {
$location.path("/Home");
};
if($scope.data.email && $scope.data.password){
var alertPopup = $ionicPopup.alert({
title: "Login Succesful",
template: "Welcome Back "
});
alertPopup.then(function(res) {
if(res) {
$scope.goToHomePage();
} else {
console.log('Do something else');
}
});
}else{
var alertPopup = $ionicPopup.alert({
title: "Login Failed",
template: "Please check your credentials"
});
}
}
})
我尝试了你的建议,但仍然,在我进入登录页面并输入电子邮件和密码后,弹出的“登录成功”被执行,但页面仍然在登录页面而不是主页中,知道我可能缺少的部分吗?我想我看到了你的问题。您的目录结构是什么样子的?你有app.js吗?如果是的话,你能把它贴出来吗?我可以看到这一行是向前的->
app.config(函数($stateProvider,$urlRouterProvider)
看起来不合适,除非你只是把它们贴在你的控制器下面。我的目录结构看起来像一个普通的目录结构,它是appname,然后在里面有钩子插件scss www,在www里面是js、img、lib、template等等。基本上这就是我们使用CLI从creator ionic下载它时得到的东西.我确实有一个app.js.所以在你上面的代码中,angular.module('app.controllers',['ionic','ui.router'])
到你的代码的一半(你有})
在它自己的控制器模块中吗?剩下的(app.config(function($stateProvider,$urlRouterProvider){
在你的app.js
中)是吗?好的。我现在编辑我的答案,让你看看它应该是什么样子。