2017-04-20 8 views
0

zurückgibt Ich habe eine eckige 1.4 Anwendung, in der ich einen Service habe, der die Kommunikation mit meinem Backend kapselt. Wenn ich etwas wie folgt mache, um Daten von einem Endpunkt zurückzugeben. Der Api Service, den ich injizierende bin kapselt mein $ http Ajax fordertAngularJS Dienst, der Variable

function MyDataService(Api, $injector, $q, $log) { 
    var self = this; 
    function getAll(){ 
     return self.Api.get('/myData').then(function(data){ 
      self.data = data; 
      return self.data; 
     }) 
    } 
    return self; 
} 

Wenn ich diese Service-Methode in einem Controller oder anderen Module verwenden, Bin Referenzierung ich direkt das Eigentum? Ich meine, wenn ich eine doppelte Bindung in einem Controller mache und diese Variable ändert, wird sich auch self.data in meinem Service ändern. Ich denke JS verwendet Referenzen standardmäßig.

Vielen Dank

+1

Ist 'self' Ihre Dienstleistung oder Ihr Controller? – Lodybo

+1

Mein Service. Ich werde den Code vervollständigen :) – acostela

+0

Include $ http für Ajax Anruf –

Antwort

1

Ja. Sie beziehen sich auf die Controller-Variable. Verwenden Sie angular copy, um dies zu vermeiden. dies versuchen

function getAll(){ 
 
    return self.Api.get('/myData').then(function(data){ 
 
     self.data = data; 
 
     var retdata={}; 
 
     angular.copy(data, retdata) 
 
     return retdata; 
 
    }) 
 
}

+0

Oder ich kann Daten direkt anstelle von selbst.data zurückgeben. Liege ich falsch? – acostela

+0

nein ... self.data hat die gleiche Referenz von Daten :) –

Verwandte Themen