2014-11-04 18 views
12

Questa potrebbe essere la domanda ripetuta ma la soluzione che ho trovato per questo problema non funziona nel mio caso, ecco perché sto postando la domanda.

ho seguito servizio:

appRoot.service('MyService', function($rootScope) { 
    var Messenger = { 
     Temp: "", 
     TempId:"", 
     tempMethod: function(Id) { 
      TempId = Id; 
      $rootScope.$broadcast('FirstCtrlMethod'); 
     } 
    }; 
    return Messenger ; 
}); 

In secondo controller:

appRoot.controller('SecondCtrl', function ($scope, $location, MyResource, NotificationService, MyService) { 
$scope.invokeFirstCtrl= function() { 
     var Id = '2'; 
     MyService.tempMethod(Id); 
}); 

In primo controller:

appRoot.controller('FirstCtrl', function ($scope, $compile, $filter, $modal, $sce, $location, NotificationService, MyService) { 
$scope.$on('FirstCtrlMethod', function() {   
     alert('I am from frist controller'); 
    }); 
}); 

Problema: La riga "$ rootScope. $ Broadcast ('FirstCtrlMethod');" è in esecuzione come previsto ma non causa l'evento "$ scope. $ On ('FirstCtrlMethod', function() {.." nel primo controller. Ho usato i servizi di differenziazione in molti posti in la mia app nello stesso modo e sono workig bene, non sto capendo il motivo per cui non funziona qui.

+1

sono entrambi controller di istanziato quando si esegue il test questo ?? – harishr

+0

Hai provato '$ emit' invece di' $ broadcast'? o semplicemente '$ rootScope. $ on' – Dylan

+0

Yah Ho provato entrambi. $ emit e $ rootScope. $ on ma non funziona ancora –

risposta

14

mettendo commento come risposta ...

Credo che l'altro controller che dovrebbe ricevere il l'evento non è ancora istatizzato quando si sta trasmettendo $ $ l'evento

Si prega di provare a istanziare l'altro controller

+5

come installare quel controller? –

+1

@satishkumarV Devi solo assicurarti che il controller sia all'interno della direttiva dell'app ("ng-app") e che tutto sia stato associato correttamente. Ad esempio, 'app.controller ('FirstCtrl', FirstCtrl)', ecc. – MirroredFate

1

prega di vedere sotto esempio di lavoro

var app = angular.module('app', []); 
 

 
app.service('MyService', function($rootScope) { 
 
    var Messenger = { 
 
    Temp: "", 
 
    TempId: "", 
 
    tempMethod: function(Id) { 
 
     TempId = Id; 
 
     $rootScope.$broadcast('FirstCtrlMethod'); 
 
    } 
 
    }; 
 
    return Messenger; 
 
}); 
 

 
app.controller('homeCtrl', function($scope, MyService) { 
 

 
    $scope.invokeFirstCtrl = function() { 
 
    var Id = '2'; 
 
    MyService.tempMethod(Id); 
 

 
    }; 
 
}); 
 

 
app.controller('FirstCtrl', function($scope) { 
 

 
    $scope.$on('FirstCtrlMethod', function() { 
 
    alert('I am from frist controller'); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="app"> 
 
    <div ng-controller="homeCtrl"> 
 

 
    <button ng-click="invokeFirstCtrl()">Invoke</button> 
 
    </div> 
 

 
    <div ng-controller="FirstCtrl"> 
 

 

 
    </div> 
 
</div>

+0

non funziona completamente – LKM

Problemi correlati