2013-02-05 29 views
10

Làm thế nào tôi có thể sử dụng hàm $ .ajax() của jQuery bên trong bộ điều khiển angularJS (thay vì angularJS dựng sẵn $ http) để các giá trị phạm vi $ có thể được truy cập từ một khung nhìn/mẫu sau?

Tôi có điều này hơi tối giản angularJS điều khiển:

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

Và theo quan điểm cái gì đó như:

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

Tuy nhiên, <h1> trong giao diện sẽ trống trên tải, altough một console.log() trong bộ điều khiển cho tôi biết rằng $ scope.user được điền như tôi muốn.

Bây giờ, nếu tôi thay thế cuộc gọi $.ajax() với $http.get() mọi thứ hoạt động tốt như mong đợi.

Tôi biết $http là angularJS được tích hợp sẵn, nhưng vì tôi không bắt đầu từ đầu nhưng đã có rất nhiều mã sử dụng jQuery trong suốt, tôi muốn dính vào jQuery với $ .ajax().

Bất kỳ ý tưởng nào?

Trả lời

23

Bởi vì sử dụng jQuery ajax là ra khỏi thế giới của góc, bạn cần phải quấn phạm vi nhiệm vụ của bạn $ bên trong

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

góc của $ http đi kèm được xây dựng trước với chu trình tiêu hóa cơ chế kích hoạt.

+0

OOoooohhh đàn ông, bạn là phù thủy, cảm ơn bạn rất nhiều – krekto

Các vấn đề liên quan