2016-03-01 103 views
1

我有這樣的呼叫狀態:我可以通過ui-router將數據傳遞給狀態嗎?

self.$state.go('heat', 
       { 
        subjectId: self.sus.subject.id, 
        examId: self.exs.exam.examId, 
        testId: self.test.testId, 
        questionNumber: 1 
       }) 

有沒有辦法,我可以通過一組數據,以這種狀態,如果這樣我怎麼能拿的方式,在我的路由器配置文件中的數據?

+0

取決於在實際URL中使用服務來存儲它的一部分的多少值 – charlietfl

回答

0

您可以在狀態配置中添加params,並指定$state.go中的值。然後您可以使用$stateParams服務訪問這些值。

UI Router Docs

1

由Mike答案表明,你可以在配置中添加params。我只想說明一下。

在你app.js,則應指定您發送

.state('statename',{ 
     url:'/state', 
     templateUrl:'js/apps/xPage/templates/something.html', 
     params:{'parameter1':null,'parameter2':null}, 
     controller:'stateCtrl' 

    }); 

的參數在你controller,你可以這樣定義

$scope.parameter1=[]; 
$scope.parameter2=[]; 

您的數據您可以添加到您的陣列這樣

$scope.parameter1.push(x); 
$scope.parameter2.push(y); 

最後,將您的值發送到t他的

$state.go('results',{'parameter1':$scope.parameter1,'parameter2':$scope.parameter2}); 
+0

感謝您的回答。當我做一個$ state.go()時,也可以在我的代碼的一個地方發送任何參數,然後在我的代碼的另一個地方做一個帶有參數的$ state.go()。我也在想發送一個大數組作爲參數。你認爲那樣會好嗎?最後還有一個問題,我可以得到解決方案中的參數值嗎?我想在那裏使用它們。如果你能展示一個非常好的例子。謝謝。 – Alan2

+0

我不認爲這會是一個問題發送大型數組。另外,如果你認爲事情可能會變得太混亂,可以使用'service'或'factory'來移動數據。另外,我[不認爲你可以得到解析內的參數值](http ://stackoverflow.com/questions/18565221/access-stateparams-of-new-state-in-service-called-from-resolve-function-with-ui)。請您澄清一下'發送沒有參數在一個地方......「,並沒有真正理解這一點。 –

+0

我在代碼中執行$ state.go時有幾個不同的地方。在一些腳本中,我想發送參數,而在其他腳本中則沒有參數。只是想知道這是否可以。 – Alan2

相關問題