2013-02-05 12 views
10

Come è possibile utilizzare la funzione $ .ajax() di jQuery all'interno di un controller angularJS (invece di $ http angularJS incorporato) in modo che i valori $ scope siano accessibili da una vista/modello dopo?

Ho questo un po 'minimalista regolatore angularJS:

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

E nella vista una cosa del genere:

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

Tuttavia, il <h1> nella visualizzazione sarà vuota di carico, benche un console.log() in il controller mi dice che $ scope.user è popolato esattamente come voglio.

Ora, se sostituisco la chiamata $.ajax() con $http.get(), tutto funziona correttamente come previsto.

Sono a conoscenza di $http che è integrato in angularJS, ma dal momento che non sto partendo da zero ma ho già un sacco di codice che utilizza jQuery in tutto, voglio attenermi a jQuery per $ .ajax().

Qualche idea?

risposta

23

Perché l'utilizzo di jQuery Ajax è fuori del mondo del angolare, è necessario avvolgere il vostro incarico ambito $ all'interno di

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

di angolare $ http viene pre-costruito con il ciclo digest meccanismo di attivazione.

+0

OOoooohhh uomini, tu sei una strega, grazie mille – krekto

Problemi correlati