[javascript] AngularJS를 사용하여 다른 페이지로 리디렉션하는 방법은 무엇입니까?
서비스 파일에서 기능을 수행하기 위해 ajax 호출을 사용하고 있으며 응답이 성공하면 페이지를 다른 URL로 리디렉션하고 싶습니다. 현재 간단한 js “window.location = response [ ‘message’];”를 사용 하여이 작업을 수행하고 있습니다. 그러나 angularjs 코드로 교체해야합니다. 나는 stackoverflow에 대한 다양한 솔루션을 보았고 $ location을 사용했습니다. 그러나 나는 각도에 익숙하지 않고 구현하기가 어렵습니다.
$http({
url: RootURL+'app-code/common.service.php',
method: "POST",
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
dataType: 'json',
data:data + '&method=signin'
}).success(function (response) {
console.log(response);
if (response['code'] == '420') {
$scope.message = response['message'];
$scope.loginPassword = '';
}
else if (response['code'] != '200'){
$scope.message = response['message'];
$scope.loginPassword = '';
}
else {
window.location = response['message'];
}
// $scope.users = data.users; // assign $scope.persons here as promise is resolved here
})
답변
Angular를 사용할 수 있습니다 $window
:
$window.location.href = '/index.html';
컨트롤러에서의 사용법 예 :
(function () {
'use strict';
angular
.module('app')
.controller('LoginCtrl', LoginCtrl);
LoginCtrl.$inject = ['$window', 'loginSrv', 'notify'];
function LoginCtrl($window, loginSrv, notify) {
/* jshint validthis:true */
var vm = this;
vm.validateUser = function () {
loginSrv.validateLogin(vm.username, vm.password).then(function (data) {
if (data.isValidUser) {
$window.location.href = '/index.html';
}
else
alert('Login incorrect');
});
}
}
})();
답변
다른 방법으로 새 URL로 리디렉션 할 수 있습니다.
- 페이지를 새로 고칠 $ window 를 사용할 수 있습니다
- 단일 페이지 앱을 “내부”로 유지하고 $ location 을 사용할 수 있으며이 경우
$location.path(YOUR_URL);
또는 중에서 선택할 수 있습니다$location.url(YOUR_URL);
. 따라서 두 방법의 기본적인 차이점$location.url()
은 get 매개 변수에도 영향을 미치지 만 get 매개 변수에 영향을 미친다$location.path()
는 것입니다.
나는에 문서를 읽고 추천 할 것입니다 $location
그리고 $window
당신이 그들 사이의 차이점에 대한 더 나은 이해를 얻을 수 있도록.
답변
$location.path('/configuration/streaming');
이것은 작동합니다 … 컨트롤러에 위치 서비스를 주입하십시오.
답변
아래 코드를 사용하여 새 페이지로 리디렉션
$window.location.href = '/foldername/page.html';
컨트롤러 기능에 $ window 객체를 주입했습니다.
답변
도움이 될 것입니다!
AngularJs 코드 샘플
var app = angular.module('app', ['ui.router']);
app.config(function($stateProvider, $urlRouterProvider) {
// For any unmatched url, send to /index
$urlRouterProvider.otherwise("/login");
$stateProvider
.state('login', {
url: "/login",
templateUrl: "login.html",
controller: "LoginCheckController"
})
.state('SuccessPage', {
url: "/SuccessPage",
templateUrl: "SuccessPage.html",
//controller: "LoginCheckController"
});
});
app.controller('LoginCheckController', ['$scope', '$location', LoginCheckController]);
function LoginCheckController($scope, $location) {
$scope.users = [{
UserName: 'chandra',
Password: 'hello'
}, {
UserName: 'Harish',
Password: 'hi'
}, {
UserName: 'Chinthu',
Password: 'hi'
}];
$scope.LoginCheck = function() {
$location.path("SuccessPage");
};
$scope.go = function(path) {
$location.path("/SuccessPage");
};
}
답변
AngularJS에서는 아래와 같이 양식 을 제출할 때 다른 페이지로 리디렉션 할 수 window.location.href='';
있습니다.
postData(email){
if (email=='undefined') {
this.Utils.showToast('Invalid Email');
} else {
var origin = 'Dubai';
this.download.postEmail(email, origin).then(data => {
...
});
window.location.href = "https://www.thesoftdesign.com/";
}
}
간단히 이것을 시도하십시오 :
window.location.href = "https://www.thesoftdesign.com/";
답변
각도 앱에서 다른 페이지로 리디렉션하는 데 문제가 있습니다.
$window
Ewald가 그의 답변에서 제안한대로을 추가 하거나을 추가 하지 않으려면 $window
시간 초과를 추가하면 작동합니다!
setTimeout(function () {
window.location.href = "http://whereeveryouwant.com";
}, 500);