2016-02-05 25 views
0

基礎上火力樣品重置用戶密碼:角形式要求範圍VAR之前提交兩次顯示

reset: function (email) { 
     var ref = new Firebase(FIREBASE_URL); 
     ref.resetPassword({ 
     email: email 
     }, function (error) { 
     if(error) { 
      $rootScope.message = ''; 

      switch(error.code) { 
      case "INVALID_USER": 
       $rootScope.error = "The specified user account does not exist."; 
       break; 
      default: 
       $rootScope.error = "Error resetting password:" + error; 
      } 
     } else { 
      $rootScope.error = ''; 
      $rootScope.message = "Thank you, you should receive an email containing your new password." 
     } 
     }); 

HTML頁面包含以下內容:

<p ng-show="message">{{message}}</p> 
<p ng-show="error">{{error}}</p> 

奇怪的是,即使復位方法被執行,消息只會在被調用兩次後纔會出現?

我嘗試在$rootScope.apply()方法中包裝resetPassword回調的if/else,但沒有改變任何內容。

我錯過了什麼?

+1

你沒有足夠的HTML來理解爲什麼會發生這種情況,但它很可能與'$ rootScope'的用法有關。 'error'和'message'是原始類型,而不是對象,並且如果* actual *'$ scope'定義了'error'或'message',由於JavaScript Prototype繼承,它們將隱藏'$ rootScope'上的屬性。完全使用'$ rootScope'是一種代碼味道。 – Claies

+1

在設置屬性後添加$ rootScope。$ apply()或$ rootScope。$ digest()。 – Nishi

回答

0

感謝Nishi的評論,通過在重置回調方法的末尾添加$ rootScope。$ apply(),它可以工作。