10

後でビュー/テンプレートから $scope 値にアクセスできるように、(angularJS 組み込み $http の代わりに) angularJS コントローラー内で jQuery の $.ajax() 関数を使用するにはどうすればよいですか?

私はこのやや最小限の angularJS コントローラーを持っています:

function UserCtrl($scope, $http) {
    $.ajax('http://localhost:8080/admin/user/johndoe').success(function(data) {
        $scope.user = data;
    });
}

そして、次のようなビューで:

<h1>Hello, {{ user.Username }}</h1>

ただし、<h1>ビューの は読み込み時に空になりますが、console.log()コントローラーの a は $scope.user が必要に応じて入力されていることを示しています。

$.ajax()ここで、呼び出しを$http.get()すべてのものに置き換えると、期待どおりに正常に動作します。

angularJS が組み込まれていることは知っ$httpていますが、ゼロから始めたわけではありませんが、全体で jQuery を使用するコードがすでにたくさんあるので、$.ajax() の jQuery に固執したいと思います。

何か案は?

4

1 に答える 1

23

jQuery ajax の使用は角度の世界から外れているため、 $scope 割り当てを

$scope.$apply(function(){
    $scope.user = data;
});

Angular の $http には、ダイジェスト サイクル トリガー メカニズムが組み込まれています。

于 2013-02-05T21:05:00.997 に答える