Я разрабатываю приложение, и после входа в систему он должен перенаправить пользователя со страницы входа на главную страницу, я делаю вход через файл API на сервере (в этот момент localhost) с помощью метода http.post
и если логин верен, сервер возвращает строку «Т», а затем в моем приложении я управляю, если строка равна «Т», и если она равна, приложение должно перенаправить пользователя на домашнюю страницу.способ использования state.go in ионный?
У меня есть только одна проблема, которая правильное использование функции state.go();
, потому что я не вижу никаких ошибок в консоли, но страница не изменяется, но url (я тестирую с ionic serve
) точно так же.
Это мой код:
APP.JS:
angular.module('starter', ['ionic', 'ui.router'])
.run(function($ionicPlatform) {
$ionicPlatform.ready(function() {
if (window.cordova && window.cordova.plugins.Keyboard) {
cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
cordova.plugins.Keyboard.disableScroll(true);
}
if (window.StatusBar) {
StatusBar.styleDefault();
}
});
})
.config(['$stateProvider', '$urlRouterProvider', function($stateProvider, $urlRouterProvider) {
$stateProvider
.state('login', {
url: '/',
//abstract : true, // Because your are have child-states under de 'splash' state, you should set it abstract : true;
templateUrl: '/login.html',
controller: "LoginCtrl"
})
.state('main', {
url: "main.html",
templateUrl: "/main.html",
})
}])
.controller('LoginCtrl', function($scope, $http, $state, $ionicHistory) {
$scope.data = {};
$scope.data.funzione = "login";
$scope.submit = function(){
//console.clear();
console.log("Dentro funzione");
console.log($scope.data.funzione);
var link = 'http://localhost/<path>/api.php';
$http.post(link, {mail : $scope.data.mail}, {pwd : $scope.data.pwd}, {funzione : $scope.data.funzione})
.then(function (res){
console.log("Dentro http.post");
$scope.response = res.data;
console.log($scope.response);
if ($scope.response != "F"){
console.log("Dentro if");
$state.go('main');
} else {
console.log("Dentro else");
}
});
};
});
ЭТО МОЯ FOLDER: (WWW)
И ЭТО URL AFTER STATE.GO():
http://localhost:8100/login.html#/main.html
Но это должно быть:
http://localhost:8100/main.html
угловой автоматически анализирует ответ на json. Поэтому отправка 'T' или' F' dosen't имеет смысл. Отправьте некоторый json-объект, а затем прочитайте ответ на стороне клиента. Ваша консоль должна печатать 'Dentro else'. –
Да, но с "! = 'F'" всегда верно (был тест для выполнения state.go) @ atulquest93 – Edoardo
Где вы вводите свой 'maincontroller' в свой раздел конфигурации основного состояния? –