2015-08-14 11 views
7

Ho cercato di impostare un oggetto servizio da una risposta post HTTP a un controller e ottenerlo da un altro controller.
Le esercitazioni che ho visto su SO o sui siti sono incentrate più sul fatto di ottenerle dall'input HTML a un controller e da un altro controller per ottenere il valore.Servizio angolare per impostare e recuperare l'oggetto tra i controllori

Vorrei evitare l'uso di rootscope e sono nuovo di angular-js.

primo controller (per dirla Data1 & Dati2 in un oggetto)

.controller('GetItem',function($scope, $http, $filter, $ionicPopup, $stateParams, $cordovaSQLite, $cordovaDatePicker, dataFactory){ 
    ... 
    console.log(resp.data); 
    var data1= resp.data.data1; 
    var data2= resp.data.data2; 
} 

secondo Controller (Per ottenere l'oggetto e recuperare data1 e data2)

Alcuni puntatori sarebbe molto apprezzato!

Update1: (Salva funzione è attiva, ma ottenere la funzione le corse a vuoto):

.service('StoreService',function(){ 

var data1=[]; //{} returns me an empty object 

this.save=function(data1){ 
alert('DATA: '+ data1); //able to retrieve string 
this.data1=data1; 

}; 

this.getData1=function(){ 
alert('DATA1: '+ data1); //unable to get string 
return data1; 

}; 
}) 

Questo è il secondo controller, che recupera dal servizio:

.controller('unlock', function($scope, $timeout, dataFactory, $stateParams,StoreService) { 

    function test(){ 
    console.log(StoreService.getData1()); 

Aggiornamento 2: (Working) Tomislav's plunker: http://plnkr.co/edit/srAphQhAYuBZL18MY1Kr?p=preview

+0

nel vostro servizio dichiarata come array:

.controller('firstController',function(StoreService){ ..... StoreService.save(resp.data.data1,resp.data.data2); }); 

In secondo controller. Si prega di utilizzare var data1 = {} se si desidera salvare un solo oggetto nella variabile tht. – Tomislav

+0

Ciao, entrambi restituiscono vuoto con {} restituendomi 'Oggetto {}' – Gene

+1

Ho reso plunker per te: http://plnkr.co/edit/srAphQhAYuBZL18MY1Kr?p=preview – Tomislav

risposta

11

risposta @atinder è la strada da percorrere. Ecco l'esempio del servizio:

app.service('StoreService',function(){ 

    var data1={}; 
    var data2={}; 
    this.save=function(data1,data2){   
     this.data1=data1; 
     this.data2=data2; 

    }; 

    this.getData1=function(){ 

    return data1; 

    }; 

    this.getData2=function(){ 

    return data2; 

    }; 
}); 

Poi, nel primo controller: dati 1

.controller('secondController',function(StoreService,$scope){ 
    $scope.data1 = StoreService.getData1(); 
    $scope.data2 = StoreService.getData2(); 
}); 
+0

Salve, presumo "StoreService.save ()"? Come i miei risp.data mi restituiscono dei valori. E non capisco perché sia ​​necessario '$ http.get ('/your/api ')' poiché non ho bisogno di alcuna richiesta http nel servizio. Grazie! – Gene

+0

Ho modificato la mia risposta. – Tomislav

+0

Ciao, grazie! Fammi tornare da te per un po '! – Gene

7

creare un servizio di base con setter e getter. Inietti il ​​servizio in entrambi i controller. usa setter in un controller e getter nell'altro.

+0

Ciao, grazie per la risposta. Guardando questo http://jsfiddle.net/rahilwazir/sk3e9e90/1/, dal servizio imposta lo stato, come posso cambiarlo in un oggetto? – Gene

Problemi correlati