Angular에서 $ location.path를 $ http.post 성공 콜백으로 리디렉션하는 방법
Post를 PHP 파일로 전송하여 간단한 인증 서비스를 만들려고합니다 ng-view
. 성공 하면 홈 페이지를 부분적으로로드해야합니다 .
이것이 내가 시도한 것입니다.
function loginCtrl($scope, $http, $location){
$http.post(url,data).success(function(data){
$location.path('/home');
});
}
내 URL이 변경되지만 ng-view
업데이트되지 않습니다. 페이지를 수동으로 새로 고치면 업데이트됩니다.
(라우트는에서 제대로 구성되었으며 $routeProvider
콜백이 아닌 독립 실행 형 함수로 리디렉션을 테스트했으며 작동합니다)
또한 $location.path('/home')
함수로 정의한 다음 콜백에서 호출했지만 여전히 작동하지 않습니다.
몇 가지 조사를했고 다른 타사 플러그인을 사용할 때 이런 일이 발생한다는 기사를 찾았습니다. angular.js 만로드하고 있습니다.
일부 학습 자료에 대한 통찰력이나 조언이 좋습니다.
다음은이 기사의 changeLocation 예입니다. http://www.yearofmoo.com/2012/10/more-angularjs-magic-to-supercharge-your-webapp.html#apply-digest-and-phase
//be sure to inject $scope and $location
var changeLocation = function(url, forceReload) {
$scope = $scope || angular.element(document).scope();
if(forceReload || $scope.$$phase) {
window.location = url;
}
else {
//only use this if you want to replace the history stack
//$location.path(url).replace();
//this this if you want to change the URL and add it to the history stack
$location.path(url);
$scope.$apply();
}
};
공식 가이드에 간단한 대답이 있습니다.
그것은 무엇을하지 않습니까?
브라우저 URL이 변경 될 때 전체 페이지를 다시로드하지 않습니다. URL을 변경 한 후 페이지를 다시로드하려면 하위 수준 API 인 $ window.location.href를 사용하세요.
출처 : https://docs.angularjs.org/guide/$location
페이지 리디렉션 (로그인에서 홈 페이지로)을 위해 다음을 수행하고 있습니다. 사용자 개체를 홈 페이지에도 전달해야합니다. 그래서 Windows localstorage를 사용하고 있습니다.
$http({
url:'/login/user',
method : 'POST',
headers: {
'Content-Type': 'application/json'
},
data: userData
}).success(function(loginDetails){
$scope.updLoginDetails = loginDetails;
if($scope.updLoginDetails.successful == true)
{
loginDetails.custId = $scope.updLoginDetails.customerDetails.cust_ID;
loginDetails.userName = $scope.updLoginDetails.customerDetails.cust_NM;
window.localStorage.setItem("loginDetails", JSON.stringify(loginDetails));
$window.location='/login/homepage';
}
else
alert('No access available.');
}).error(function(err,status){
alert('No access available.');
});
그리고 그것은 나를 위해 일했습니다.
을 사용하는 대신으로 success
변경 then
하면 작동합니다.
다음은 코드입니다.
lgrg.controller('login', function($scope, $window, $http) {
$scope.loginUser = {};
$scope.submitForm = function() {
$scope.errorInfo = null
$http({
method : 'POST',
url : '/login',
headers : {'Content-Type': 'application/json'}
data: $scope.loginUser
}).then(function(data) {
if (!data.status) {
$scope.errorInfo = data.info
} else {
//page jump
$window.location.href = '/admin';
}
});
};
});
사용 : $ window.location.href = '/Home.html';
아주 쉬운 코드입니다 ..하지만 벌금을 부과하기는 어렵습니다 ..
detailsApp.controller("SchoolCtrl", function ($scope, $location) {
$scope.addSchool = function () {
location.href='/ManageSchool/TeacherProfile?ID=' + $scope.TeacherID;
}
});
'developer tip' 카테고리의 다른 글
벡터의 C ++ 11 emplace_back (0) | 2020.10.27 |
---|---|
MySQL-피연산자는 1 개의 열을 포함해야합니다. (0) | 2020.10.27 |
: after 요소가 다음 줄로 줄 바꿈되지 않도록 방지 (0) | 2020.10.27 |
단어 목록으로 grep하는 방법 (0) | 2020.10.27 |
의 의미는 무엇입니까! (0) | 2020.10.27 |