изменить URL-адрес при успешном входе в систему angularjs

Привет, я хочу изменить URL-адрес при успешном входе в систему. URL-адрес для входа — localhost/filename/login.html, а в случае успеха — localhost/filename/index.html#/birds_eye. Использую angularjs 1.3.14. Вот код app.js

var  app = angular.module('cirqSignUp', 

['cirq.controllers','cirq.services','ngRoute','ngStorage'])

app.config(['$routeProvider', function($routeProvider) {
    $routeProvider
    .when('/login',{templateUrl: '/login.html',   controller: 'login'})
    .when('/birds_eye', {templateUrl: 'pages/birds_eye_view.html',   controller: 'birdsEye',reloadOnSearch: false})
    //.when('/analytics', {templateUrl: 'pages/analytics.html',   controller: 'birdsEye'})
    //.when('/items', {templateUrl: 'pages/listitems.html',   controller: 'birdsEye'})
    .when('/items/import_export', {templateUrl: 'pages/items/import_export.html',   controller: 'importExport'})
    .when('/items/categories', {templateUrl: 'pages/items/categories.html',   controller: 'forCategory'})
    //.otherwise({redirectTo: '/birds_eye'});
}])

а вот код контроллера

.controller('login', ['$scope','$http','Services','$rootScope','$localStorage', '$sessionStorage','$location', function($scope,$http,Services,$rootScope,$localStorage, $sessionStorage,$location){
$('.error').hide();
$scope.loginRest = function(restLogin){
    //
    //alert(JSON.stringify(restLogin));
    var request = Services.loginDashboard(restLogin);
    request.success(function(res,status,headers,config){
        alert(status);
        //return
        $localStorage.resDataRest = res.useremailid;
        $localStorage.resTotalSales = res.dashBoard.todayssales;
        $localStorage.resTotalTransct = res.dashBoard.todaystransactions;
        console.log(JSON.stringify($rootScope.resDataRest));
        $location.path('/birds_eye');
        //afterLogin(res.useremailid);
        //console.log($rootScope.resDataRest)
    }).error(function(res,status,headers,config){
        $scope.resMsg = res.responsemessage;
            $('.error').show();
        //alert(status);
    });
};
//$rootScope.resDataRest = $scope.getVar;
/*function afterLogin(res){
    $scope.data1 = res;
    //$rootScope.afterLoginData = $scope.data1;
    alert(JSON.stringify($scope.data1));
}

*/}])

Проблема, с которой я сталкиваюсь при использовании $location, заключается в том, что URL-адрес не обновляется и пытается использовать windows.location, но проблема с window.location заключается в том, что объект ответа, который я сохраняю в переменной области/корневой области, становится нулевым. Помогите пожалуйста мне


person Prashanth    schedule 01.04.2016    source источник
comment
Services.loginDashboard() возвращает обещание $http?   -  person Malk    schedule 01.04.2016
comment
Поскольку это SPA, использующий $location.path('/birds_eye');, это все, что вам нужно, чтобы перейти к localhost/filename/#/birds_eye после входа в систему. Я немного беспокоюсь, потому что вы говорите, что URL-адрес localhost/filename/index.html#/birds_eye. Вы используете веб-сервер? Где вы это тестируете? А как насчет вашего обслуживания также?   -  person Marios Fakiolas    schedule 01.04.2016
comment
да, я использую службу, а также веб-сервер. index.html содержит общую часть страницы, поэтому URL-адрес такой.   -  person Prashanth    schedule 01.04.2016
comment
@malk Да, я получаю ответ   -  person Prashanth    schedule 01.04.2016
comment
Нет, я имею в виду сервис angular.$http. В противном случае вам может потребоваться $scope.$apply() вручную.   -  person Malk    schedule 01.04.2016
comment
надоело, что не помогает :(   -  person Prashanth    schedule 01.04.2016
comment
при использовании $location все переменные localstorage становятся неопределенными.   -  person Prashanth    schedule 01.04.2016


Ответы (1)


Из документа $location:

Это не вызывает полной перезагрузки страницы при изменении URL-адреса браузера. Чтобы перезагрузить страницу после изменения URL-адреса, используйте API более низкого уровня, $window.location.href.

так что попробуйте:

$window.location.href = '/birds_eye';
person thaleshcv    schedule 01.04.2016
comment
но изменит ли это login.htm на index.html#/birds_eye? - person Prashanth; 01.04.2016
comment
при использовании $location все переменные localstorage становятся неопределенными. - person Prashanth; 02.04.2016