我正在开发AngularJS应用程序。我正在尝试将$state.go
中的值发送到不同的州。我正在尝试如下。
这是我的状态:
$stateProvider
.state('Registration.OTPVerification', {
url: '/RegistrationOTPVerification',
templateUrl: 'Registration/RegistrationOTP.html',
controller: 'RegistrationOTPVerification'
});
我正在尝试如下。
var customerid = response.data.ID;
var OTP = response.data.OTP;
$state.go('Registration.OTPVerification', customerid,OTP);
我正在尝试接收以下控制器中的参数。
(function () {
angular.module('RoslpApp').controller('RegistrationOTPVerification', ['$scope', '$http', '$translatePartialLoader', '$translate', '$state', function ($scope, $http, $translatePartialLoader, $translate, $state, $stateParams) {
var customerid = $stateParams.customerid;
var OTP = $stateParams.OTP;
alert(customerid);
}]);
})();
我无法接收参数。任何帮助,将不胜感激。谢谢。
答案 0 :(得分:10)
您需要将params
作为state
才能通过$stateProvider
.state('Registration.OTPVerification', {
url: '/RegistrationOTPVerification',
params: {
customerid: null,
OTP: null
},
templateUrl: 'Registration/RegistrationOTP.html',
controller: 'RegistrationOTPVerification'
});
发送。像这样:
$state.go
现在,您可以使用$state.go('Registration.OTPVerification', {
customerid: 123,
OTP: 2323
});
,如下所示:
$stateParams.customerid
最后,您可以按照使用$stateParams.OTP
和$stateParams
的方式访问它们,但要确保注释$state
就像$translate
和<div [style.transform]="'translateX(' + x + 'px)'">
一样注入。
答案 1 :(得分:0)
链接 - https://ui-router.github.io/ng1/docs/0.3.1/index.html#/api/ui.router.state。$ state
语法 - go(to,params,options) params - 将发送到州的参数映射,将填充$ stateParams
$stateProvider.state('Registration.OTPVerification', {
url: '/RegistrationOTPVerification/:data',
templateUrl: 'Registration/RegistrationOTP.html',
controller: 'RegistrationOTPVerification'
});
$state.go('Registration.OTPVerification', response);
(function () {
angular.module('RoslpApp').controller('RegistrationOTPVerification', ['$scope', '$http', '$translatePartialLoader', '$translate', '$state', function ($scope, $http, $translatePartialLoader, $translate, $state, $stateParams) {
var customerid = $stateParams.data.ID;
var OTP = $stateParams.data.OTP;
alert(customerid);
}]);
})();
答案 2 :(得分:0)
只需使用$state.go
:
$state.go('Registration.OTPVerification',
{
customerid: response.data.ID,
OTP: response.data.OTP
});
您还需要在$stateProvider.state
中将url参数定义为:
$stateProvider
.state('Registration.OTPVerification', {
url: '/RegistrationOTPVerification',
params: {
customerid: '',
OTP: ''
},
templateUrl: 'Registration/RegistrationOTP.html',
controller: 'RegistrationOTPVerification'
});
这是更新的控制器以获取参数:
(function () {
angular.module('RoslpApp').controller('RegistrationOTPVerification', ['$scope', '$http', '$translatePartialLoader', '$translate', '$state', '$stateParams', function ($scope, $http, $translatePartialLoader, $translate, $state, $stateParams) {
var customerid = $stateParams.customerid;
var OTP = $stateParams.OTP;
alert(customerid);
}]);
})();
答案 3 :(得分:0)
Try this.
$stateProvider
.state('Registration.OTPVerification', {
url: '/RegistrationOTPVerification',
params: {
customerid: null,
OTP:null
},
templateUrl: 'Registration/RegistrationOTP.html',
controller: 'RegistrationOTPVerification'
})
调用pass参数时:
$state.go('Registration.OTPVerification',{customerid: "gfdg",OTP:"4545"});
答案 4 :(得分:0)
我想加两分钱。上面的解决方案中有一个问题会导致其他问题。我在各州使用views
,并且将params
($ stateParams)放在views
中,但是它没有用。 params
必须存在于状态控制器的根级别。我不确定是否可以通过views
下列出的值...以及是否可以通过/检索值。
这是我的初始状态控制器定义:
.state('tab.clubs', {
cache: true,
url: '/clubs',
views: {
'tab-clubs': {
templateUrl: 'templates/tab-clubs.html',
controller: 'ClubCtrl',
params: {
'refreshClubs' : 0,
'pushAction' : 0,
'pushSub' : null,
'pushMsg' : null,
'pushCode' : null
}
}
}
})
然后进入控制器:
var payload = {
'pushAction' : 1,
'pushSub' : "blah",
'pushMsg' : "more blah blah",
'pushCode' : code
}
$state.go('tab.clubs',payload) ;
它将路由到正确的控制器/页面,但未传递任何参数。直到我将状态提供程序更改为以下内容:
.state('tab.clubs', {
cache: true,
url: '/clubs',
params: {
'refreshClubs' : 0,
'pushAction' : 0,
'pushSub' : null,
'pushMsg' : null,
'pushCode' : null
},
views: {
'tab-clubs': {
templateUrl: 'templates/tab-clubs.html',
controller: 'ClubCtrl'
}
}
})