Javascript $stateParams在传递给控制器后未定义
我使用ui路由器将对象传递到另一个状态,并使用Javascript $stateParams在传递给控制器后未定义,javascript,angularjs,angular-ui-router,undefined,Javascript,Angularjs,Angular Ui Router,Undefined,我使用ui路由器将对象传递到另一个状态,并使用 $state.go() 但是$stateParams对象的console.log显示为未定义。对象由x和y坐标组成,它们是0到20之间的简单整数值。当我在EnterCtrl中记录userData时,我得到了正确的变量,因此我假定发送了正确的信息 我在这里查阅了许多例子,并尝试了许多选择,但我无法使其发挥作用。如何让画布看到$stateParams EnterCtrl使用$state.go传递userData对象 对象被传递到的应答状态 var a
$state.go()
但是$stateParams对象的console.log显示为未定义。对象由x和y坐标组成,它们是0到20之间的简单整数值。当我在EnterCtrl中记录userData时,我得到了正确的变量,因此我假定发送了正确的信息
我在这里查阅了许多例子,并尝试了许多选择,但我无法使其发挥作用。如何让画布看到$stateParams
EnterCtrl使用$state.go传递userData对象
对象被传递到的应答状态
var answerState = {
name: 'answer',
url: '/answer/:coor',
templateUrl: 'partials/answer.html',
controller: 'CanvasCtrl',
params: {coor: null}
};
接收状态参数的控制器
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);
}]);
首先创建一个工厂,设置状态参数值,该工厂包含如下函数:
function stateParam() {
var selectedRelease = "your value"
$state.go('app.dashboard.detail.releases', {'selectedRelease':
selectedRelease});
}
将此工厂注入两个控制器
使用工厂名称在第一个控制器中调用此函数。如果您有工厂名称,则可以将其称为:
factory.stateParam我修复了您的问题。
基本上,我添加了JSON.stringify,以便在发送之前将对象转换为JSON,否则它将打印为[object object]。您可以共享ui路由器版本吗?您可以添加一个plunker吗?@Smart_bassi我刚刚添加了它。@puemos angular ui router/0.4.2/angular-ui-router.jsit应该可以在没有工厂的情况下工作,这是一个变通方法,并没有解决最初的问题,只是隐藏了它的工作原理,现在我可以在打印到控制台时看到数据。当我将数据传递给另一个方法并尝试访问x和y变量时,我得到了未定义的数据。这是因为对象被字符串化了吗?或者尝试使用JSON.parse从字符串中获取对象我已经更新了plunkr,我将尝试使用JSON.parse,很高兴我能提供帮助
function stateParam() {
var selectedRelease = "your value"
$state.go('app.dashboard.detail.releases', {'selectedRelease':
selectedRelease});
}