我有一个问题,我希望在路由更改后立即从服务中获取方法。该方法必须在Firebase上查找对象:
app.service('document',function($q,$firebase){
var databaseReference = new Firebase(firebase),
database = $firebase(databaseReference);
return{
getDocument: function(title){
return database.documents[title];
}
}
});
不幸的是,documents
属性不会直接加载;它需要几毫秒才能出现。
我知道我可以将其包含在承诺中,但是只有在该承诺得到解决后,我才能使服务返回?
答案 0 :(得分:1)
如果您使用Angular ui-router,您可以将一个或多个promises放在控制器所在状态的resolve
块中,并将这些promise声明为注入控制器的依赖项。然后,在所有这些承诺都得到解决之后,控制器才会被创建,并且在您的控制器中,您将可以访问已解决的承诺。有关详细信息,请参阅https://github.com/angular-ui/ui-router/wiki#resolve。