2016-04-22 15 views
5

Sono nuovo ai AngularJS, ho bisogno di accedere alla variabile che viene assegnata all'interno della promessa in JavascriptCome accedere variabile dichiarata all'interno promessa nel AngularJS

this.reqData= this.profileService.getData(); 
var resp1 = angular.fromJson(this.reqData); 
this.data1; 

var that = this; 
resp1.$promise.then(function (data) { 
    that.data1= data.resource.resource; 
}).catch(function (error) { 
    console.log(error); 
}); 

console.log(this.data1); 

la data1 variabile si può accedere da HTML ma sta mostrando undefined in Javascript

+0

Non accedervi al di fuori della promessa. Non è possibile recuperare il valore dal futuro (a meno che non si inventi i viaggi nel tempo). – Bergi

risposta

6

Le promesse sono asincrone. Il problema è che, quando si arriva allo console.log, il codice $promise.then non è ancora stato eseguito. È necessario attendere che la promessa sia soddisfatta prima di poter accedere a tali dati.

Qualsiasi operazione che si desidera applicare al valore deve essere fatto all'interno che callback funzione che si sta passando a then:

resp1.$promise.then(function (data) { 
    var data1 = data.resource.resource; 
    // do all your processing on data1 *here* 
    console.log(data1); 
}).catch(function (error) { 
    console.log(error); 
}); 

AngularJS è in grado di aggiornare il codice HTML quando si ottiene il dati, perché $promise è di tipo angolare: sa che, una volta eseguita la richiamata, deve dire ad AngularJS di aggiornare/ridipingere la pagina (e quindi aggiornare i dati).

1

Perché non si sa quando i promise ritorna, quindi sarà non essere immediatamente disponibili per voi in console.log(this.data1);

È possibile accedere ai dati all'interno del callback.

resp1.$promise.then(function (data) { 
    that.data1= data.resource.resource; 
    }).catch(function (error) { 
    console.log(error); 
});