2016-09-30 14 views
0

ngStorageに問題があります。ファクトリーをjQueryの$ajaxに使用すると、を.then()(使用できません)に使用することはできません。

$scope.updateProfile = function() {   
    updateProfileFactory.init($scope.dataProfile).then(   
     function (data) 
      if (data.status == "success") { 
       $localStorage.currentUser.fullname = $scope.dataProfile.u_fullname; 
      }     
     }   
    ) 
} 

私はそれが仕事の罰金、.then()$localStorageを使用しますが、私の中にそれを置く必要がある場合。

$scope.updateProfile = function() {   
    $localStorage.currentUser.fullname = $scope.dataProfile.u_fullname; 
    updateProfileFactory.init($scope.dataProfile).then(
     function (data) { 
      if (data.status == "success") { 
       // code 
      }    
     }   
    ) 
} 

問題はどこですか?

+0

「動作しません」と定義するのをより困難にしてください。 'then'関数が呼び出されたかどうかをデバッグできますか? –

答えて

3

Angularの$httpライブラリを使用してAJAXの処理をしないのはなぜですか? jQueryとAngularを組み合わせると、予測できない結果が得られます。

アプリケーションで既にAngularを使用していることがわかります。だからあなたは角度の道を完全に進めてはならない理由は本当にありません。 $httpサービスは、jQueryの$.ajaxが提供する機能のすべてを提供します。

Angularは、バニラのJavascript関数またはjQuery関数でAngular関数を使用すると、スコープの外側にあるので、Angularはこれらが呼び出されることを認識しません。ここではAngularの$applyを使用することができますが、これは理想的ではなく、ハックです。

$.ajaxのコールバック関数は、依存関係として渡されないため、$localStorageを認識していない可能性があります。

+0

$ http "POST"はヘッダーとデータ形式にデフォルトの問題があるので、$ .ajaxを使用します。それは容易です。 –

+0

あなたが持っている問題を投稿できれば、私たちはあなたを助けることができました。 '$ http 'が' $ .ajax'ができることはできません。ヘッダーは設定でき、ペイロードも完全に制御できます。 – nikjohn

+0

私は、$ .ajaxの使用がより速く、より簡単で、より良い方法であるプロジェクトを持っています。私の質問は約$ .ajax対$ httpではないので、あなたは答えが役に立たない。 –

関連する問題