我正在使用this generator。
我有我的用户模块:
require('angular/angular');
require('angular-ui-router');
angular.module('userModule', ['ui.router'])
.config(['$stateProvider', function($stateProvider) {
$stateProvider
.state('utenti', {
url: '/utenti',
templateUrl: 'src/utenti/views/utenti.tpl.html',
controller: 'RegistrationCrl',
})
.state('access', {
url: '/access',
templateUrl: 'src/utenti/views/access.tpl.html',
controller: 'AccessCtrl',
});
}])
.controller('RegistrationCrl', require('./controllers/registrationLogin'))
.controller('AccessCtrl', require('./controllers/access'));
在我的RegistrationCrl中,我使用服务来创建一个新成员:
module.exports = function($scope, User, Member, $state, $location,$rootScope, $stateParams){
$scope.registration = function(form){
if(!form.$valid ){
console.log('input error');
return;
}
else{
console.log('valid form');
Member.create($scope.newMember,
function(data){
$state.go('access', data);
},
function(data){
console.log(data);
}
);
}
};
};
我想在下一个与accessCtl相关的视图中使用该数据。我不想在我的网址中使用ID并使用$ stateParams。
我的门禁控制器是:
module.exports = function($scope, User, Member, $state, $rootScope, $stateParams){
console.log($state);
console.log($stateParams);
};
在那个console.log中,我发现我的对象是通过$ state.go传递的。
答案 0 :(得分:10)
您可以使用$ stateParams将数据传递到下一个视图。 在目标路线中添加参数
$stateProvider
.state('utenti', {
url: '/utenti',
templateUrl: 'src/utenti/views/utenti.tpl.html',
params: { myParam: null},
controller: 'RegistrationCrl',
})
将数据传递到下一个视图
$state.go("utenti",{myParam:{"data":"data"}})
在下一个控制器中获取数据
$scope.paramDetails=$stateParams.myParam;
答案 1 :(得分:0)
我的理解是你不能将状态之间的对象作为参数传递。一种选择是使用service
,它可以被您注入的所有控制器访问。
对于共享service
Passing data between controllers in Angular JS?
答案 2 :(得分:0)
使用ui.router的解析声明
resolve:{
data: ['$stateParams', function($stateParams){
return $stateParams.data;
}]