我正在開發一個應用程序,登錄後應該將用戶從登錄頁面重定向到主頁,我正在通過服務器上的API文件(在這一刻是本地主機)使用http.post
方法進行登錄,如果登錄是正確的服務器返回字符串「T」然後在我的應用程序我控制,如果字符串等於「T」,如果它是等於應用程序應該重定向用戶到主頁。如何在離子狀態下使用state.go?
我只有一個問題,這是正確使用的功能state.go();
,因爲我沒有看到在控制檯中的任何錯誤,但頁面不會改變,但網址(我測試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");
}
});
};
});
THIS IS MY文件夾:(WWW)
,這是URL後STATE.GO():
http://localhost:8100/login.html#/main.html
但它應該是:
http://localhost:8100/main.html
angular自動分析對json的響應。所以發送'T'或'F'不合乎情理。發送一些json對象,然後在客戶端讀取響應。你的控制檯必須打印'Dentro else'。 –
是的,但用「!='F'」總是爲真(是做state.go的測試)@ atulquest93 – Edoardo
你在哪裏將maincontroller注入主狀態配置部分? –