[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로 리디렉션 할 수 있습니다.

  1. 페이지를 새로 고칠 $ window 를 사용할 수 있습니다
  2. 단일 페이지 앱을 “내부”로 유지하고 $ 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/"; 


답변

각도 앱에서 다른 페이지로 리디렉션하는 데 문제가 있습니다.

$windowEwald가 그의 답변에서 제안한대로을 추가 하거나을 추가 하지 않으려면 $window시간 초과를 추가하면 작동합니다!

setTimeout(function () {
        window.location.href = "http://whereeveryouwant.com";
    }, 500);