Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript $stateParams在传递给控制器后未定义_Javascript_Angularjs_Angular Ui Router_Undefined - Fatal编程技术网

Javascript $stateParams在传递给控制器后未定义

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

我使用ui路由器将对象传递到另一个状态,并使用

$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});
         }