.controller('CyclesController', function ($scope, $state) {
$scope.age = 0;
$scope.name = "";
$scope.email = "";
$scope.calculateByAge = function (age, name, email) {
$scope.data = $scope.data || {};
if (age > 0) {
$scope.data.age = age;
$scope.data.name = name;
$scope.data.email = email;
$state.go('tab.cycles-detail');
}
}
})
.controller('CyclesDetailController', function ($scope, $stateParams, CyclesService) {
console.log('scope data', $scope.data); // <--- undefined.
})
这可能是一个愚蠢的问题,但可以从CyclesDetailController
控制器上的表单中获取数据。
答案 0 :(得分:0)
如果它是简单的属性,你可以通过路由来完成。只需更改您的&#34; tab.cycles-detai&#39; to&#39; tab.cycles-detai /:age&#39;在您的ui-router配置中,当您重定向时将其传递:$ state.go(&#39; tab.cycles-detail&#39;,{age:age});
在&#39; CyclesDetailController&#39;通过$ stateParams.age访问它;
e.g:
//app.config
//...
.state('tab.cycles-detail', {
url: "^detail/{age:int}",
controller: 'CyclesDetailController',
templateUrl: "url_for_detail_template"
})
//...
// CyclesController
.controller('CyclesController', function ($scope, $state) {
$scope.age = 0;
$scope.calculateByAge = function (age) {
$scope.data = $scope.data || {};
if (age > 0) {
$scope.data.age = age;
$state.go('tab.cycles-detail', {age: age);
}
}
})
//CyclesDetailController
.controller('CyclesDetailController', function ($scope, $stateParams, CyclesService) {
console.log('scope data', $stateParams.age);
})
//
答案 1 :(得分:0)
如果您想将数据从一个路径传递到另一个路径,但又不想在浏览器菜单栏中显示它,则可以使用squash
。
示例 -
.state('app.enroll', {
url: '/enroll/',
params: {
classId: {
value: null,
squash: true
},
className: {
value: null,
squash: true
}
},
title: 'Students Enrollment',
templateUrl: helper.basepath('enroll.html')
})
第二种技术 -
您可以使用 localStorage / cookies 保存数据并在以后检索。
第三种技术 -
您始终可以通过控制器之间的服务/工厂共享数据。