2014-01-17 31 views
0

我遇到了一个问题,那就是我想在路由更改后立即从服务中激发一个方法。该方法具有查找上的火力地堡的对象:等待Firebase完全加载角度服务

app.service('document',function($q,$firebase){ 

    var databaseReference = new Firebase(firebase), 
     database   = $firebase(databaseReference); 

      return{ 

       getDocument: function(title){ 

        return database.documents[title]; 
       } 

      } 
    }); 

不幸的是,documents属性不会直接加载;它需要几毫秒才能出现。

我知道我可以把它包装在一个承诺,但我怎么才能使服务被返回,只有当该承诺解决?

回答

1

如果您使用Angular UI路由器,您可以将一个或多个承诺放入与您的控制器处于相同状态的resolve块中,并将它们声明为要注入到控制器中的依赖关系。直到所有这些承诺都已解决,控制器才会创建,并且在您的控制器中,您可以访问已解决的承诺。有关更多信息,请参阅https://github.com/angular-ui/ui-router/wiki#resolve