我有一个服务,它存储某些对象以在不同的控制器之间共享它。在这种情况下,我有以下代码
$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
时,我得到了正确的对象。为什么是这样?我认为服务是单身人士。
答案 0 :(得分:1)
如果您尝试在状态之间保留数据,则需要考虑使用内置角度路由器或第三方UI路由器(非常受欢迎,我更喜欢)。然后你可以使用resolve来解决注入或params,将数据从一个'state'传递到另一个'state'。
你正在获得你的'对象'然后移动状态 - 这会启动另一个控制器,丢失你的对象。查看scotch.io的angular router页面,这非常有用。你最好在state.config.js中使用resolve,然后将它注入你的控制器中使用。