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在控制器中访问这些参数...