2016-06-15 3 views
5

私はもともとui-router(2日前にそれについて知ったことがある)でプロジェクトをやろうとは考えていなかったので、私はこれでかなり新しいです。角度ui-routerを使用して状態間でデータを渡すにはどうすればよいですか?

私はこの問題を持っていることは次のとおりです。

  1. ngのリピートを使用して示されている画像の一覧のテンプレート、およびコントローラに呼び出されたサービスからIMG SRC-を得ます。サービスはjsonファイルからソースを取得します。

  2. イメージエディタのテンプレート。このためのコントローラは、画像リスト内でクリックされた画像の画像ソースを取得する必要があります。

イメージソースをある状態(イメージリスト)から別の状態(イメージエディタ)に渡すにはどうすればよいですか?

私はui-routerとその状態を使用しないと仮定していたときにサービスを使用していました。どのように私は州でこれを行うのですか?

+0

可能な複製:http://stackoverflow.com/questions/28248236/angular-ui-router-passing-data-between-states-without-url – dYale

答えて

2

だから、私は、データを渡すための簡単で効率的な方法を発見したが、これは今までの私の例のすべてのために働いています。 (元の質問に記載されたものとは異なるシナリオを含む)

最初の状態、STATE1の制御装置において、私はちょうど

$state.go('state2', {id: self.value}); 

関数を呼び出すことができ、STATE2に、私がして値を取得することができます次のコードは:

this.state2value = $state.params.id; 

だから、ある状態から別の状態valueを通過し、状態のparamsを通してそれを取得することができます。

注:$ stateと$ stateParamsを両方のコントローラに注入する必要があります。

+2

あなたの州のプロバイダに 'url:"/test /:id "、'を追加することを忘れないでください。 –

1

私はあなたが状態1から状態2に画像IDを渡し、状態2コントローラでそれを得ることができると思う:

$stateProvider 
.state('state', { 
    url: "/test/:id", 
    templateUrl: 'template.html', 
    controller: function ($stateParams) { 
     console.log($stateParams.id); 
    } 
}) 

とリンク最初のページからui-sref="state({id:42})"

+0

ありがとう、とても助かりました! – McFiddlyWiddly

1

サービスはまだのようです2つの州の間で情報を共有するための最善の選択肢です。あなたがあなたのサービスのいずれかの状態の情報が必要な場合、あなたはそれに$状態を注入することができます

...... 
.service('SomeService', [ 
     '$state', 
     function ($state) { 
      ....... 
関連する問題