2017-01-24 13 views
0

私は、異なるコントローラ間でそれを共有する特定のオブジェクトを格納するサービスを持っています。この場合、私は次のコードを持っていますサービスは、initの後にオブジェクトを取得します

$rootScope.$on('controller.event', function(event, arg){ 
      self.backendConnectorService.getBackendObject('99901').then(function(object){ 
     if(object) { 
      self.myService.selectDeselectObject(object); 
      console.log(self.myService.getCurrentObject()); 
      $state.go('myApp.mainArea.appsArea.objects.wizards'); 
     } 
    }); 

私は自分のオブジェクトを持っているとき、オブジェクトを初期化する必要がある状態に行きます。問題は、その状態のコントローラをロードすると、self.myService.getCurrentObject()がnullを返すときです。上記のコードでconsole.logを実行すると、正しいオブジェクトが得られます。どうしてこれなの?私はサービスがシングルトンだと思った。

答えて

1

州間でデータを保存しようとしている場合は、組み込みの角度ルータまたはサードパーティ製のUI-Router(好評です)を使用することについて考える必要があります。次に、解決法を使用して、ある州から別の州にデータを渡すための注入やパラメータを解決することができます。

あなたはオブジェクトを取得してから状態を移動しています - これはあなたのオブジェクトを失う別のコントローラを開始します。 scotch.ioのangular routerページを参照してください。これは非常に役に立ちます。あなたは、state.config.jsの解決法を使って、あなたのコントローラに注入して使う方が良いでしょう。

+0

以前の状態によって異なるオブジェクトを解決できますか?私は状態AからBに移動すると、ObjectTypeAが必要です。状態CからBに移動すると、ObjectTypeBが必要ですか? – acostela

+0

できると仮定して、-any-オブジェクトを解決できます。 – rrd

関連する問題