2015-10-14 4 views
0

У меня есть страница входа.AngularJs location.path не передает параметры

login.html

<ion-view view-title="Login" name="login-view"> 
    <ion-content class="padding"> 
     <div class="list list-inset"> 
      <label class="item item-input"> 
       <input type="text" placeholder="Username" ng-model="data.username"> 
      </label> 
      <label class="item item-input"> 
       <input type="password" placeholder="Password" ng-model="data.password"> 
      </label> 
     </div> 
     <button class="button button-block button-calm" ng-click="login()">Login</button> 
    </ion-content> 
</ion-view> 

Когда я нажмите кнопку для входа login() метод работает ниже

контроллер LoginCtrl.

.controller('LoginCtrl', function ($scope, LoginService, $ionicPopup, $state, $location, $http) { 
    $scope.login = function() { 
    $http({ 
     method: 'GET', 
     url: 'http://localhost:49431/api/values/GetUserInfo?username=' + $scope.data.username + '&password=' + $scope.data.password + '' 
    }).then(function successCallback(response) { 
     if (response.data.Status == true) { // Success 
     $location.path('/HomePage/').search({ id: '1' }); // Problem here 
     } else { // Fail 
     var alertPopup = $ionicPopup.alert({ 
      title: 'Login failed!', 
      template: 'Username or password is incorrect!' 
     }); 
     $scope.data.username = ""; 
     $scope.data.password = ""; 
     } 
    }, function errorCallback(response) { 
     alert("error"); 
    }); 
    } 
}) 

Я использую

$location.path('/HomePage/').search({ id: '1' }); 

код для того, чтобы передать идентификатор параметра в homepage.html page.However ни местоположения пути параметра прохода, ни переадресовать page.Shortly путь местоположение не работает.

контроллер HomePageCtrl

.controller('HomePageCtrl', function ($scope, HomePageService, $state, $location, $cordovaCamera, $stateParams, $routeParams) { 
    alert($routeParams.id + $stateParams.id); 
} 

app.js

.config(function ($stateProvider, $urlRouterProvider) { 
    $stateProvider 
    .state('HomePage', { 
     url: '/HomePage', 
     templateUrl: 'templates/HomePage.html', 
     controller: 'HomePageCtrl' 
    }) 
    .state('login', { 
     url: '/login', 
     templateUrl: 'templates/Login.html', 
     controller: 'LoginCtrl' 
    }); 
    $urlRouterProvider.otherwise('/login'); 
}); 

Вопрос:

Как я могу передать параметр в контроллер HomePageCtrl от контроллера LoginCtrl с помощью $location.path?

Любая помощь будет оценена по достоинству.

Спасибо.

+0

$ location.path() не загружает новую страницу. Обновляется ли URL-адрес в браузере или происходит полное игнорирование вызова $ location.path? –

ответ

2

Почему вы не используете $ состояние вместо $ месте

App.js:

.state('HomePage', { 
      url: '/HomePage/:id', 
      templateUrl: 'templates/HomePage.html', 
      controller: 'HomePageCtrl' 
    }) 

LoginCtrl:

.controller('LoginCtrl', function ($scope, LoginService, $ionicPopup, $state, $location, $http) { 

      $scope.login = function() { 

      $http({ 
       method: 'GET', 
       url: 'http://localhost:49431/api/values/GetUserInfo?username=' + $scope.data.username + '&password=' + $scope.data.password + '' 
      }).then(function successCallback(response) { 

       if (response.data.Status == true) { // Success 

        $state.go('HomePage',{id:'1'}) 

       } 
       else { // Fail 
        var alertPopup = $ionicPopup.alert({ 
         title: 'Login failed!', 
         template: 'Username or password is incorrect!' 
        }); 

        $scope.data.username = ""; 
        $scope.data.password = ""; 
       } 

      }, function errorCallback(response) { 
       alert("error"); 
      }); 
    } 
    }) 

HomeCtrl:

.controller('HomePageCtrl', function ($scope, HomePageService, $state, $location, $cordovaCamera, $stateParams, $routeParams) { 

    alert($stateParams.id); 
} 
2

Я не пробовал с location.path, но в целом вы должны указать параметры в определении URL-адресов в $ stateProvider:

$stateProvider 
.state('HomePage', { 
    url: '/HomePage', 
    templateUrl: 'templates/HomePage.html', 
    controller: 'HomePageCtrl' 
}) 
.state('login', { 
    url: '/login/:userid/:password', 
    templateUrl: 'templates/Login.html', 
    controller: 'LoginCtrl' 
}) 

Чем вы можете получить доступ к этим параметрам в вашем контроллере с $stateParams.userid ...