Sto provando a inviare un array pieno di oggetti dal controller 1 al controller 2. Ma tutto ciò che ottengo nel controller 2 è un array vuoto. L'unico modo per ottenerne uno pieno è quando creo un array statico nel mio servizio.Condivisione dei dati tra i controller AngularJS
Il mio servizio
app.service('myData', function() {
this.myData = [];
this.addData = function(data) {
this.myData.push(data);
}
this.getData = function() {
return this.myData;
}});
regolatore 1, che imposta i dati
app.controller('controller1',['$scope', 'myData', function($scope, myData) {
$scope.addData = function(index, name) {
myData.addData({index: index, name: name});
}}]);
controller 2 si presenta così
app.controller('controller2',['$scope', 'myData', function($scope, myData) {
$scope.myData = myData.getData();
$scope.$watch('myData.getData()', function(data){
console.log(data);
});
console.log($scope.myData);}]);
Quando ero alla ricerca di una risposta che ho trovato un sacco di domande quasi simile al mio. L'unica differenza era che riempio il mio servizio dal mio controller invece di creare un servizio statico.
Entrambi i miei console.logs restituiscono un array vuoto. Perchè è questo?
è necessario utilizzare il campo di applicazione principale o una delle il meccanismo di comunicazione come la trasmissione o gli eventi – Rafa
il tuo orologio mi sembra un po 'strano. prova questo 'function() {return myData.getData()}' invece di 'data.getData()' –