Как перенаправить на другую страницу с помощью 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, в то время как $location.path() не делает этого.

Я бы рекомендовал прочитать документы в $location и $window чтобы вы лучше понимали различия между ними.

$location.path('/configuration/streaming'); это будет работать … вставлять службу определения местоположения в controller

Я использовал приведенный ниже код для перенаправления на новую страницу

 $window.location.href = '/foldername/page.html'; 

и вводил объект $ window в мою функцию controllerа.

Это может помочь вам!

Образец кода 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"); }; } 

В Angular Js вы можете перенаправить свою форму ( на submit ) на другую страницу, используя windos.location.href = ”;

как это:

 postData(email){ if (email=='undefined') { this.Utils.showToast('Invalid Email'); } else { let origin = 'Dubai' this.download.postEmail(email, origin).then(data => { }); window.location.href = "https://www.thesoftdesign.com/"; } } Simply try this : window.location.href = "https://www.thesoftdesign.com/"; 

Простой способ использования

 app.controller("Back2Square1Controller", function($scope, $location) { window.location.assign(basePath + "/index.html"); }); 

Хороший способ сделать это – использовать $ state.go (‘statename’, {params …}) быстрее и удобнее для пользователей в случаях, когда вам не нужно перезагружать и загружать всю конфигурацию приложения и прочее

 (function() { 'use strict'; angular .module('app.appcode') .controller('YourController', YourController); YourController.$inject = ['rootURL', '$scope', '$state', '$http']; function YourController(rootURL, $scope, $state, $http) { $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) { if (response['code'] == '420') { $scope.message = response['message']; $scope.loginPassword = ''; } else if (response['code'] != '200') { $scope.message = response['message']; $scope.loginPassword = ''; } else { // $state.go('home'); // select here the route that you want to redirect $state.go(response['state']); // response['state'] should be a route on your app.routes } }) } }); 

// маршруты

 (function() { 'use strict'; angular .module('app') .config(routes); routes.$inject = [ '$stateProvider', '$urlRouterProvider' ]; function routes($stateProvider, $urlRouterProvider) { /** * Default path for any unmatched url */ $urlRouterProvider.otherwise('/'); $stateProvider .state('home', { url: '/', templateUrl: '/app/home/home.html', controller: 'Home' }) .state('login', { url: '/login', templateUrl: '/app/login/login.html', controller: 'YourController' }) // ... more routes .state } })(); 

Я столкнулся с проблемами при перенаправлении на другую страницу в угловом приложении

Вы можете добавить $window как предложил Эвальд в своем ответе, или если вы не хотите добавлять $window , просто добавьте тайм-аут, и он будет работать!

 setTimeout(function () { window.location.href = "http://whereeveryouwant.com"; }, 500); 
  (function () { "use strict"; angular.module("myApp") .controller("LoginCtrl", LoginCtrl); function LoginCtrl($scope, $log, loginSrv, notify) { $scope.validateUser = function () { loginSrv.validateLogin($scope.username, $scope.password) .then(function (data) { if (data.isValidUser) { window.location.href = '/index.html'; } else { $log.error("error handler message"); } }) } } }()); 

Если вы хотите использовать ссылку, то: в html есть:

  

в файле машинописных файлов

 public openLineItems() { if (this.$stateParams.id == 0) { this.Flash.create('warning', "Need to save order!", 3000); return } this.$window.open('#/orderLineitems/' + this.$stateParams.id); 

}

Надеюсь, вы видите этот пример полезным, как и для меня, а также для других ответов.

  • Когда происходит событие «размытия», как я могу узнать, какой элемент фокуса пошел * на *?
  • Как я могу получить доступ к переменной вне метода `.then`?
  • После установки Gulp: «no command» gulp «found»
  • Как создать словарь и добавить пары ключ-значение динамически?
  • Выполнить JavaScript до и после запуска f: ajax listener
  • Как избежать привязки внутри метода рендеринга
  • Как я могу добавить 1 день к текущей дате?
  • Преобразование даты времени UTC в локальное время
  • Извлечь («получить») число из строки
  • Может ли jQuery считывать / записывать cookies в браузер?
  • es6 Карта и сложность набора, реализация v8
  • Давайте будем гением компьютера.