2017-04-18 30 views
0

我使用的UI路由器使用

$state.go() 

傳遞對象到另一個國家,而控制器但是對於$ stateParams對象的console.log被顯示爲未定義到控制器後不確定。該對象由x和y座標組成,它們是0到20之間的簡單整數值。當我console.log中的userData在EnterCtrl中時,我得到正確的變量,所以我認爲正確的信息已經發送。

我經歷了很多例子看着這裏嘗試了很多的選擇,但我不能得到它的工作。我怎樣才能獲得$stateParamsCanvasCtrl

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

https://plnkr.co/edit/lwP7DGkwHl2ZWWegazyv?p=preview

+0

你能分享ui路由器版本嗎? – puemos

+1

你可以添加一個運動員嗎? –

+0

@clever_bassi我剛剛在那裏添加了它。 –

回答

1

我固定您的問題here。 基本上,我添加JSON.stringify在發送它之前將對象轉換爲json,否則它會打印爲[object Object]

+0

感謝那些工作,現在我可以看到數據,當我打印到控制檯。當我將數據傳遞給另一個方法並嘗試訪問x和y變量時,我得到未定義的值。那是因爲對象被stringify了嗎? –

+0

你可以向你展示你試圖去做的活動嗎? –

+0

或嘗試使用JSON.parse()來從我已經更新了plunkr字符串 –

0

首先創建一個工廠,設置你的狀態參數值的方式包含函數象下面這樣:

 function stateParam() { 
      var selectedRelease = "your value" 
      $state.go('app.dashboard.detail.releases', {'selectedRelease': 
        selectedRelease}); 
     } 

注入這家工廠在這兩個控制器。

呼叫使用廠名此功能在您的第一個控制器。就像如果你有廠名比你可以稱其爲: factory.stateParam()

+0

它應該工作,沒有工廠,這是一個解決辦法,而不是解決原來的問題,只是隱藏得 – puemos