पर काम नहीं करता है, मैं अपने कोणीय ऐप में रूटिंग के लिए ui.router
का उपयोग कर रहा हूं। एक सामान्य लॉगिन परिदृश्य है, जहां मैं किसी उपयोगकर्ता को लॉग इन यूआरएल में रीडायरेक्ट कर रहा हूं, अगर वह लॉग इन नहीं है। Ui.router लाइब्रेरी के बिना, यह $R30Start ईवेंट $location.path
के साथ संयुक्त किया गया। अब, मैं $stateChangeStart
ईवेंट का उपयोग कर रहा हूं, $state.go
के साथ संयुक्त, और कुछ भी काम नहीं करता है! यह मेरे ब्राउज़र को अनंत लूप में भी भेजता है। मैंने अन्य स्रोतों से पढ़ा है कि यह एक ज्ञात बग है, और सुझाए गए समाधानों में से कोई भी मेरे लिए काम नहीं करता है। इसके अलावा, $location.path
भी लॉगिन पृष्ठ पर रीडायरेक्ट नहीं करता है।कोणीय यूई राउटर - रीडायरेक्शन सभी
यह कैसे मैं अपने पथ कॉन्फ़िगर कर दिया है है:
.config(['$stateProvider', '$urlRouterProvider', function ($stateProvider, $urlRouterProvider) {
$stateProvider
.state('main', {
url: '/',
templateUrl: 'views/main.html',
controller: 'MainCtrl'
})
.state('about', {
url: '/about',
templateUrl: 'views/about.html',
controller: 'AboutCtrl'
})
.state('login', {
url: '/login',
templateUrl: 'views/loginform.html',
controller: 'LoginCtrl'
});
$urlRouterProvider.otherwise("/");
}])
और मेरे run
विधि:
.run(['$state', '$rootScope', '$location', function($state, $rootScope, $location) {
//Check when routing starts
//event, next, current
$rootScope.$on('$stateChangeStart', function(e, toState, toParams, fromState, fromParams) {
//Redirect to login if the user is not logged in
if (!isUserLoggedIn) {
//Some suggestion
//e.preventDefault();
console.log('Not logged in');
//Infinite loop, kills my browser!
$state.go('login');
$state.transitionTo('login');
//Some suggestion
$state.go('login', { url: '/login'});
//Doesn't work
$location.path('/login');
//$location.path($state.href('login');
console.log('Redirected');
}
});
'isUserLoggedIn' कहां परिभाषित किया गया है? – Phil
मेरे पास एक प्रमाणीकरण सेवा है, मैंने कुछ आधिकारिक कारणों से इसे इस कोड से छोड़ दिया है। यह डिफ़ॉल्ट रूटिंग के साथ अच्छी तरह से काम किया। –