0

J'essaie de créer une ressource partagée entre deux contrôleurs dans angularjs. J'ai utilisé getData() dans le second contrôleur pour obtenir les données stockées et remplir une table de données dans le second contrôleur. J'ai omis la partie Table de données dans le code pour plus de simplicité.Fonction de partage entre deux contrôleurs angularjs

Ce qui suit est mon fichier contrôleur avec deux contrôleurs

(function(){ 
     var app = angular.module('adminCtrls',[]); 
     // Main Controller 
     app.controller('mainCtrl', function($scope, $http,testSrv){ 

     // Get the data form the phoenix database based on the query defined 
     // in db_size.php 
     $http.get('rest/admin/db_size.php').then(function(response){ 
     $scope.answers = response.data; 
     $scope.me = "$scope.answer"; 
      testSrv.setData($scope.me); 
     }); 
     }); 
     }) 

     // Modal Controller 
     app.controller('modalCtrl', function($scope,$http,testSrv){ 
     console.log(testSrv.getData()); 

     }); 

     }); 

    })(); // EOF 

Ce qui suit est mon dossier de candidature angulaire

(function(){ 
    // Angular App 
    var app = angular.module('adminApp', ['ngRoute', 'adminCtrls', 'siteSrvs']); 
    // Routing 
    app.config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider){ 

     // HTML5 Mode 
     $locationProvider.html5Mode({ 
      enabled: true 
     }); 

    }]); 

    })(); 

Ceci est mon service. J'essaye de placer des données dans mon premier contrôleur et d'obtenir les mêmes données de mon deuxième contrôleur.

Mon deuxième contrôleur ne peut pas voir les données qui ont été stockées par le premier contrôleur.

Je veux savoir s'il me manque un module d'injection ??

Répondre

0

je vous dirais avez tout correct dans votre code, il vous suffit de lier votre contrôleur modal à vue il sera appelé, alors vous verrez la valeur à votre service:

<body ng-controller="MainCtrl"> 
    <p>Hello {{name}}!</p> 
    <div ng-controller="modalCtrl">{{data}}</div> 
</body> 

juste ajouté une variable à la portée de l'imprimer dans la vue:

// Modal Controller 
app.controller('modalCtrl', function($scope, $http, testSrv) { 
    $scope.data = testSrv.getData(); 
    console.log('modalCtrl',$scope.data); 
}); 

est ici un plunker de l'essayer par vous-même.

+0

J'essaye d'employer la méthode de getData dans le deuxième contrôleur pour obtenir les données et peupler une table de données à l'intérieur du deuxième contrôleur. Mon problème est getData ne montre pas les données qui ont été stockées par le premier contrôleur –

+0

Pour rester simple, j'ai commenté l'appel au service que vous avez dans le premier contrôleur. Je vous recommande de vérifier si le setData est réellement appelé, car s'il y a une erreur, elle ne sera jamais appelée. Vous pourriez appeler le setData en dehors de ce bloc juste pour le tester ou attraper l'erreur pour cet appel. – elvin