等待Firebase在Angular Service中完全加载

时间:2014-01-17 13:22:25

标签: angularjs firebase promise

我有一个问题,我希望在路由更改后立即从服务中获取方法。该方法必须在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 个答案:

答案 0 :(得分:1)

如果您使用Angular ui-router,您可以将一个或多个promises放在控制器所在状态的resolve块中,并将这些promise声明为注入控制器的依赖项。然后,在所有这些承诺都得到解决之后,控制器才会被创建,并且在您的控制器中,您将可以访问已解决的承诺。有关详细信息,请参阅https://github.com/angular-ui/ui-router/wiki#resolve