10

如何在 angularJS 控制器中使用 jQuery 的 $.ajax() 函数(而不是 angularJS 内置的 $http),以便以后可以从视图/模板访问 $scope 值?

我有这个有点简约的 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()一切正常,则按预期工作。

我知道$http这是 angularJS 内置的,但由于我不是从头开始,但已经有很多使用 jQuery 的代码,我想为 $.ajax() 坚持使用 jQuery。

有任何想法吗?

4

1 回答 1

23

因为使用 jQuery ajax 超出了 Angular 的范畴,所以您需要将 $scope 赋值包装在

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

Angular 的 $http 预先构建了摘要循环触发机制。

于 2013-02-05T21:05:00.997 回答