2017-01-24 5 views
0

У меня есть служба, в которой хранится определенный объект для обмена им между разными контроллерами. В этом случае у меня есть следующий кодСлужба получает объект null после 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-маршрутизатора (очень популярного, который я предпочитаю). Затем вы можете использовать resolves для разрешения инъекций или params для передачи данных от одного «состояния» к другому.

Вы получаете свой «объект», а затем состояние перемещения - это инициирует другой контроллер, теряя ваш объект. Посмотрите на страницу scotch.io angular router, что весьма полезно. Вам лучше использовать разрезы в state.config.js, а затем ввести его в свой контроллер для использования.

+0

Можно ли разрешить различные объекты в зависимости от предыдущего состояния? Я имею в виду, если я перехожу из состояния A в B Мне нужен ObjectTypeA, и если я перехожу из состояния C в B, мне нужен ObjectTypeB? – acostela

+0

Вы можете разрешить -any-объект, который вы хотите, если хотите. – rrd