1

parsewithを使用しangularjsてユーザーを認証しています。これが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

そして、これがフォームです(同じページ、ナビゲーションバーのドロップダウン、およびページコンテンツで2回使用されています):

%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 回続けて送信する必要がある場合があります。

私は何を間違っていますか?ありがとうございました。

4

1 に答える 1

1

おそらく、成功のコールバックに $scope.apply() を含める必要があります。Angularjs のドキュメントから:

「$apply() は、angular フレームワークの外部から angular で式を実行するために使用されます。(たとえば、ブラウザー DOM イベント、setTimeout、XHR、またはサード パーティ ライブラリから)。Angular フレームワークを呼び出しているため、適切に実行する必要があります。例外処理のスコープ ライフサイクル、ウォッチの実行。」

Parse でも同様の問題があり、$scope.apply() で解決しました。

これが私のコントローラーです

ps。私はangularjsに比較的慣れていないため、上記のコードは最も効率的ではない可能性があることに注意してください:)

于 2013-07-07T08:41:42.327 に答える