Angularjs – passer des données entre les contrôleurs

Je construis une application angulaire à l'aide de modals et j'aimerais transmettre certaines données entre mes contrôleurs pour remplir ma vue modale.

Mon contrôleur principal est JobListCtrl et callReportModalData est déclenché lorsque je clique sur le lien censé appeler le modal. J'utilise le rapport de serviceJobModalData pour stocker les données et la passer entre les contrôleurs.

var myApp = angular.module('myApp', []); myApp.controller('JobListCtrl', ['$scope', '$element', '$http', '$log', 'reportJobModalData', function ($scope, $element, $http, $log, reportJobModalData) { $scope.reportJobModalData = reportJobModalData; $scope.callReportModal = function(test){ reportJobModalData.test = test; } }]); myApp.service('reportJobModalData', function(){ this.test = ''; }); 

Mon contrôleur et directive modaux sont définis comme suit:

 myApp.controller('reportJobCtrl', function ($rootScope, $scope, $http, $log, reportJobModalData) { $scope.$log = $log; $scope.reportJobModalData = reportJobModalData; $scope.test = reportJobModalData.test; $log.info('test: ' + reportJobModalData.test); }); myApp.directive('sjReportJobModal', ['$rootScope', '$log', '$http', 'reportJobModalData', function ($rootScope, $log, $http, reportJobModalData) { return { restrict: 'E', templateUrl: 'report-job-modal-tpl', replace: true, transclude: true, link: function (scope) { } }; }]); 

Et le modèle que j'utilise est celui-ci:

 <div class="modal fade" id="reportJobModal" tabindex="-1" role="dialog" aria-labelledby="reportJobModalLabel" aria-hidden="true" ng-controller="reportJobCtrl"> <div class="modal-content ease"> <section> {{ reportJobModalData.test }} </section> </div> <div class="modal-overlay ease" data-dismiss="modal"></div> </div> 

Ici, les données sont imprimées correctement sur le mode. Cependant, je ne peux pas accéder aux données dans le contrôleur, c'est-à-dire que $ scope.test est vide car je n'obtiens que 'test:' connecté à la console.

Qu'est-ce que je fais mal?

Merci beaucoup pour votre aide

Essayez d'appliquer une montre sur la variable de service, il semble qu'au moment où la valeur est définie dans joblistctrl, votre reportjobctrl est exécuté.

Placez donc ce code dans reportjobctrl et faites-moi savoir les résultats

 $scope.$watch(function(){ return reportJobModalData.test}, function(new,old){ $scope.test=new; });