2014-09-04 42 views
3

我有一種情況,當我console.log一個對象它顯示爲空,但在同一時間有一些屬性。angularjs,現有的javascript對象顯示null,如何?

我撂荒了this tutorial或簡稱:

.factory('Auth', function ($http, $q, $firebase, FBURL, $location, $firebaseSimpleLogin, $rootScope) { 
     var ref = new Firebase(FBURL); 
     var auth = $firebaseSimpleLogin(ref); 
     console.log(auth); 
     var Auth = { 
      signedIn: function() { 
       return auth.user !== null; 
      }, 
      login: function (user) { 
       return auth.$login('password', user); 
      } 
     }; 

     $rootScope.signedIn = function() { 
      return Auth.signedIn(); 
     }; 

     return Auth; 
    }); 

,我得到這樣的:在這種情況下

enter image description here

,認證後,console.log(Auth.signedIn());回報false因爲對象日誌顯示爲空,但是當我打開看裏面我可以看到屬性

這是什麼?

+1

這個過程是異步的嗎?用戶對象可能在您在控制檯中查看時加載。 – 2014-09-04 00:43:37

+0

嗯,...檢查 – Patrioticcow 2014-09-04 00:46:21

回答

2

$AngularFire.$fireBaseSimpleLogin.login函數返回promise。意味着它的異步。帕特里克埃文的評論是準確的。在您查看控制檯中的對象時,它現在有信息。

如果你繼續按照教程,最後控制器會包裝一個login函數來正確處理諾言。

注意:這也是爲什麼您編寫的函數Auth.login只返回另一個函數調用的值。你基本上是在創建一個接口,以便稍後將登錄實現細節從控制器(或其他服務)中抽象出來。控制器並不需要知道你用什麼服務登錄,只是login函數返回一個承諾,它可以稍後做些什麼。

相關問題