2013-07-05 92 views
1

我使用parseangularjs來驗證用戶身份。這是login函數。

$scope.doLogin = -> 
    Parse.User.logIn $scope.currentUser.username, $scope.currentUser.password, 
     success: (user) -> 
     console.log user 
     $scope.currentUser = user 
     error: (user, error) -> 
     console.log error 

這裏是形式(在同一頁上,導航欄下拉列表並在頁面內容使用了兩次):

%form{"ng-submit" => "doLogin()"} 
    %input{"ng-model" => "currentUser.username", type: "text"} 
    %input{"ng-model" => "currentUser.password", type: "password"} 

    %button.btn.btn-block 
    %center Connexion 

的問題是,每當表單提交,我可以看到user對象在控制檯中,但$scope.currentUser並不總是得到更新。有時我必須連續提交表格3到4次才能更新。

我在做什麼錯?謝謝。

+1

是不是因爲它是異步? – Ven

+0

@ user1737909我知道但如何解決這個問題? – Alex

+0

您可以在承諾對象上調用'.then' – Ven

回答

1

也許你應該在你的成功回調中包含$ scope.apply()。來自Angularjs文檔:

「$ apply()用於從角度框架的外部角度執行表達式(例如從瀏覽器DOM事件,setTimeout,XHR或第三方庫)。進入角度框架,我們需要執行正確的範圍生命週期的異常處理,執行手錶。「

我有一個Parse類似的問題,我用$ scope.apply()解決了它。

Here is my controller

ps。請注意,我對angularjs比較陌生,上面的代碼可能不是最高效的:)