init之后,服务获取对象为null

时间:2017-01-24 14:27:41

标签: javascript angularjs angular-services

我有一个服务,它存储某些对象以在不同的控制器之间共享它。在这种情况下,我有以下代码

    $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');
        }
    });

当我有我的对象时,我会进入需要初始化对象的状态。问题是,当我为该状态加载控制器时,当{I} self.myService.getCurrentObject()返回null时。当我在上面的代码中执行console.log时,我得到了正确的对象。为什么是这样?我认为服务是单身人士。

1 个答案:

答案 0 :(得分:1)

如果您尝试在状态之间保留数据,则需要考虑使用内置角度路由器或第三方UI路由器(非常受欢迎,我更喜欢)。然后你可以使用resolve来解决注入或params,将数据从一个'state'传递到另一个'state'。

你正在获得你的'对象'然后移动状态 - 这会启动另一个控制器,丢失你的对象。查看scotch.io的angular router页面,这非常有用。你最好在state.config.js中使用resolve,然后将它注入你的控制器中使用。