一尘不染

在angularJS控制器中使用jQuery的$ .ajax

angularjs

如何在angularJS控制器(而不是angularJS内置的$ http)中使用jQuery的$ .ajax()函数,以便以后可以从视图/模板访问$
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的代码,因此我想坚持使用jQuery作为$
.ajax()。

有任何想法吗?


阅读 291

收藏
2020-07-04

共1个答案

一尘不染

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

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

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

2020-07-04