Ich entwickle eine App und nach dem Login sollte der Benutzer von der Login-Seite auf die Homepage umgeleitet werden, ich mache die Anmeldung über eine API-Datei auf dem Server (in diesem Moment der localhost) mit http.post
Methode und wenn Die Anmeldung ist korrekt, der Server gibt die Zeichenfolge "T" zurück, in meiner App steuere ich, ob die Zeichenfolge gleich "T" ist und wenn es gleich ist, sollte die App den Benutzer auf die Homepage umleiten.wie state.go in ionic verwenden?
Ich habe nur ein Problem, das ist die ordnungsgemäße Verwendung der Funktion state.go();
, weil ich keine Fehler in der Konsole sehe, aber die Seite ändert sich nicht, aber die URL (ich teste mit ionic serve
) in ändern genau so.
Dies ist mein Code:
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");
}
});
};
});
THIS MY-Ordner ist: (www)
und dies ist der URL NACH STATE.GO():
http://localhost:8100/login.html#/main.html
Aber es sollte sein:
http://localhost:8100/main.html
angular analysiert automatisch die Antwort auf json. Das Senden von 'T' oder' F' macht also keinen Sinn. Senden Sie ein JSON-Objekt und lesen Sie die Antwort am Client-Ende. Ihre Konsole muss "Dentro else" drucken. –
ja, aber mit "! = 'F'" ist immer wahr (war ein Test für state.go) @ atulquest93 – Edoardo
Wo spritzt du deinen 'maincontroller' in deinen Main-State-Config-Bereich? –