Использование jQuery $.ajax в контроллере angularJS

Как я могу использовать функцию jQuery $.ajax() внутри контроллера angularJS (вместо встроенного встроенного $http), чтобы значения $scope могли быть доступны из представления/шаблона позже?

У меня есть несколько минималистичный угловой контроллер:

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

И в представлении что-то вроде:

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

Однако <h1> в представлении будет пустым при загрузке, хотя a console.log() в контроллере сообщает мне, что $scope.user заполняется так, как я хочу.

Теперь, если я заменю вызов $.ajax() на $http.get(), все работает нормально, как ожидалось.

Я знаю $http, который является angularJS встроенным, но поскольку я не начинаю с нуля, но у меня уже много кода, который использует jQuery всюду, я хочу придерживаться jQuery для $.ajax().

Любые идеи?

Ответ 1

Поскольку использование jQuery ajax выходит за пределы мира angular, вам нужно обернуть выделение $scope внутри

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

Angular $http поставляется с заранее построенным механизмом запуска цикла дайджест.