我正在使用ui-router通过
将对象传递给另一个状态和控制器$state.go()
但$ stateParams对象的console.log显示为未定义。该对象由x和y坐标组成,这些坐标是介于0和20之间的简单整数值。当我在EnterCtrl
中调用user.log时,我得到了正确的变量,因此我假设已经发送了正确的信息。
我在这里看了很多例子并尝试了很多选项,但我无法让它发挥作用。如何让$stateParams
CanvasCtrl
EnterCtrl
使用$state.go
myMap.controller('EnterCtrl',['$scope', '$state', function EnterCtrl($scope,$state){
$scope.formData = {
x: 0,
y: 0
};
var userData = $scope.formData;
// console.log(userData);
$scope.goToAnswer = function(){
console.log(userData);
$state.go('answer', {coor: userData}) ;
};
}]);
回答对象传递给的状态。
var answerState = {
name: 'answer',
url: '/answer/:coor',
templateUrl: 'partials/answer.html',
controller: 'CanvasCtrl',
params: {coor: null}
};
收到stateParams的控制器。
myMap.controller('CanvasCtrl', ['$scope','$state','$stateParams',function CanvasCtrl($scope,$state,$stateParams){
var userData = $stateParams.coor;
// var userDataY = $stateParams.coor.y;
//var userDataX = $stateParams.coor.y;
console.log(userData);
}]);
答案 0 :(得分:1)
我修复了您的问题here。
基本上,我在发送之前添加了JSON.stringify
将对象转换为json,否则它将打印为[object Object]
。
答案 1 :(得分:0)
首先创建一个工厂,设置你的状态参数值包含如下函数:
function stateParam() {
var selectedRelease = "your value"
$state.go('app.dashboard.detail.releases', {'selectedRelease':
selectedRelease});
}
将此工厂注入两个控制器。
使用工厂名称在第一个控制器中调用此函数。就像你有工厂名称一样,你可以称之为: 的 factory.stateParam()强>