Aplikasi yang saya kerjakan berisi berbagai status (menggunakan ui-router), di mana beberapa negara mengharuskan Anda untuk masuk, yang lain tersedia untuk umum.
Saya telah membuat metode yang secara valid memeriksa apakah pengguna masuk, apa yang saat ini saya alami adalah mengalihkan ke halaman masuk kami bila perlu. Perlu dicatat bahwa halaman login saat ini tidak ditempatkan di dalam aplikasi AngularJS.
app.run(function ($rootScope, $location, $window) {
$rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams) {
if (toState.data.loginReq && !$rootScope.me.loggedIn) {
var landingUrl = $window.location.host + "/login";
console.log(landingUrl);
$window.open(landingUrl, "_self");
}
});
});
Console.log menunjukkan url yang dimaksud dengan benar. Baris setelah itu, saya telah mencoba hampir semuanya dari $ window.open hingga window.location.href dan tidak peduli apa yang saya coba, tidak ada pengalihan yang terjadi.
EDIT (TERSELESAIKAN):
Menemukan masalahnya.
var landingUrl = $window.location.host + "/login";
$window.open(landingUrl, "_self");
Variabel landingUrl disetel ke 'domain.com/login', yang tidak akan berfungsi dengan $ window.location.href (yang merupakan salah satu hal yang saya coba). Namun setelah mengubah kode menjadi
var landingUrl = "http://" + $window.location.host + "/login";
$window.location.href = landingUrl;
sekarang bekerja.
sumber
location
objek asli menggunakan$window.location=...
Jawaban:
Saya percaya cara untuk melakukan ini adalah
$location.url('/RouteTo/Login');
Edit untuk Kejelasan
Katakanlah rute saya untuk tampilan login saya adalah
/Login
, menurut saya$location.url('/Login')
untuk menavigasi ke rute itu.Untuk lokasi di luar aplikasi Angular (yaitu tidak ada rute yang ditentukan), JavaScript lama biasa akan melayani:
window.location = "http://www.my-domain.com/login"
sumber
$window
alih-alihwindow
(sumber: stackoverflow.com/questions/28906180/… )Tampaknya untuk memuat ulang halaman penuh
$window.location.href
adalah cara yang lebih disukai.https://docs.angularjs.org/guide/$location
sumber
Ini mungkin membantu Anda! demo
Sampel Kode AngularJs
var app = angular.module('urlApp', []); app.controller('urlCtrl', function ($scope, $log, $window) { $scope.ClickMeToRedirect = function () { var url = "http://" + $window.location.host + "/Account/Login"; $log.log(url); $window.location.href = url; }; });
Contoh Kode HTML
<div ng-app="urlApp"> <div ng-controller="urlCtrl"> Redirect to <a href="#" ng-click="ClickMeToRedirect()">Click Me!</a> </div> </div>
sumber
Tidak yakin dari versi apa, tapi saya menggunakan 1.3.14 dan Anda bisa menggunakan:
window.location.href = '/employee/1';
Tidak perlu menyuntikkan
$location
atau$window
di pengontrol dan tidak perlu mendapatkan alamat host saat ini.sumber
Anda harus meletakkan:
< html ng-app = "urlApp" ng-controller = "urlCtrl">
Dengan cara ini fungsi sudut dapat mengakses objek "jendela"
sumber