2014-01-17 63 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