2017-01-24 3 views
0

다른 컨트롤러간에 공유 할 특정 객체를 저장하는 서비스가 있습니다. 이 경우 다음 코드가 있습니다서비스 초기화 후 객체가 null이됩니다.

$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

상태간에 데이터를 보존하려는 경우 기본 제공 각도 라우터 또는 제 3 자 UI-Router (선호하는 매우 대중적)를 사용하는 측면에서 생각해야합니다. 그런 다음 해결 방법을 사용하여 분사를 해결하거나 데이터를 하나의 '상태'에서 다른 상태로 전달할 수 있습니다.

'개체'를 이동 한 다음 상태를 이동하는 중입니다. 그러면 다른 컨트롤러가 시작되어 개체가 손실됩니다. scotch.io의 angular router 페이지를 참고하십시오.이 페이지가 도움이됩니다. state.config.js에서 해결 방법을 사용한 다음 컨트롤러에 주입하여 사용하는 것이 더 낫습니다.

+0

이전 상태에 따라 다른 개체를 해결할 수 있습니까? 나는 상태 A에서 B로 이동하면 ObjectTypeA가 필요하며 상태 C에서 B로 이동하면 ObjectTypeB가 필요합니까? – acostela

+0

당신이 원한다면, 당신이 원하는대로 객체를 해석 할 수 있습니다. – rrd