AngularJs location.path没有传递参数

时间:2022-08-24 12:51:18

I have Login page.

我有登录页面。

Login.html

的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>

When i click to login button login() method works in below

当我点击登录按钮时,login()方法在下面工作

LoginCtrl controller.

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");
    });
  }
})

I use

我用

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

code in order to pass id parameter to HomePage.Html page.However neither location path pass parameter nor redirect page.Shortly location path is not working.

代码,以便将id参数传递给HomePage.Html页面。但是,无论位置路径传递参数还是重定向页面都没有。短暂的位置路径不起作用。

HomePageCtrl controller

HomePageCtrl控制器

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

app.js

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');
});

Question:

题:

How can i pass parameter to HomePageCtrl controller from LoginCtrl controller by using $location.path?

如何通过使用$ location.path从LoginCtrl控制器传递参数到HomePageCtrl控制器?

Any help will be appreciated.

任何帮助将不胜感激。

Thanks.

谢谢。

2 个解决方案

#1


2  

Why you don't use $state instead of $location

为什么你不使用$ state而不是$ location

App.js :

App.js:

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

LoginCtrl:

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 :

HomeCtrl:

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

    alert($stateParams.id);
}

#2


2  

I haven't tried it with location.path but generally you need to specify parameters in the url definition of the $stateProvider:

我没有尝试过location.path,但通常你需要在$ stateProvider的url定义中指定参数:

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

Than you can access these parameters in your controller with $stateParams.userid...

您可以使用$ stateParams.userid在控制器中访问这些参数...

#1


2  

Why you don't use $state instead of $location

为什么你不使用$ state而不是$ location

App.js :

App.js:

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

LoginCtrl:

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 :

HomeCtrl:

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

    alert($stateParams.id);
}

#2


2  

I haven't tried it with location.path but generally you need to specify parameters in the url definition of the $stateProvider:

我没有尝试过location.path,但通常你需要在$ stateProvider的url定义中指定参数:

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

Than you can access these parameters in your controller with $stateParams.userid...

您可以使用$ stateParams.userid在控制器中访问这些参数...