如何在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随便填充。
<h1>
console.log()
现在,如果我将$.ajax()呼叫替换为$http.get()一切正常,则可以正常工作。
$.ajax()
$http.get()
我知道$http这是内置的angularJS,但是由于我不是从头开始,而是已经有很多使用jQuery的代码,因此我想坚持使用jQuery作为$ .ajax()。
$http
有任何想法吗?
因为使用jQuery ajax超出了angular的范畴,所以您需要将$ scope分配包装在
$scope.$apply(function(){ $scope.user = data; });
Angular的$ http带有摘要循环触发机制预先构建。