Angular에서 $location으로 리디렉션하는 방법.path를 $120으로 지정합니다.성공 후 콜백
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
페이지 리다이렉트(로그인에서 홈페이지로)는 아래와 같습니다.사용자 오브젝트를 홈페이지에도 전달해야 합니다.그래서 윈도우 로컬 스토리지를 사용하고 있습니다.
$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;
}
});
언급URL : https://stackoverflow.com/questions/14301524/in-angular-how-to-redirect-with-location-path-as-http-post-success-callback
'programing' 카테고리의 다른 글
SQL Server:크로스 조인(CROSS JOIN)과 풀 아우터 조인(FULL OUTER JOIN)의 차이점은 무엇입니까? (0) | 2023.04.07 |
---|---|
서버 주체가 SQL Server MS 2012의 현재 보안 컨텍스트에서 데이터베이스에 액세스할 수 없습니다. (0) | 2023.04.07 |
angular.js 뷰에서 사용하기 전에 스코프 변수가 로드될 때까지 기다립니다. (0) | 2023.04.02 |
타이프스크립트에서 enum을 인덱스 키 유형으로 사용하는 방법 (0) | 2023.04.02 |
워드프레스에서 쿼리를 선택하다 (0) | 2023.04.02 |