2017-09-05 8 views
1

Je veux passer la valeur à un contrôleur de nerds au contrôleur de geek mais incapable de passer dans ng-routeur.diffuser et émettre ne fonctionne pas avec ng-routeur?

<button type="Submit" ng-click="showUser()">Show Details</button> 

.when('/geeks', { 
    templateUrl: 'views/geek.html', 
    controller: 'GeekController'  
}) 


.when('/nerds', { 
    templateUrl: 'views/nerd.html', 
    controller: 'NerdController' 
}) 

Dans contrôleur Nerds J'ai cette fonction

$scope.showUser=function(){ 
    $rootScope.$broadcast('btnName',{message:"msg"}) 
} 

dans le contrôleur de geek que je reçois la valeur de la charge de la page elle-même, mais je ne reçois pas la valeur pls me aider à trouver la solution

$rootScope.$on('btnName',function(event,args){ 
    $scope.msg=args.message; 
    console.log("$scope.message nnnn",$scope.msg) 
}) 

Répondre

0

Le NerdController et le GeekController sont dans deux pages séparées, un seul des contrôleurs peut être actif à la fois, car angulaire a un seul pa ge ouvert dans l'onglet. Donc ce que je suggère est de passer la variable en paramètre à l'itinéraire, vous pouvez le voir dans l'exemple ci-dessous.

JSFiddle Demo

JS:

var routingExample = angular.module('Example.Routing', []); 
routingExample.controller('NerdController', function ($scope, $location) { 
    $scope.showUser = function(){ 
    console.log("show"); 
    $location.path('/geek/1'); 
    } 
}); 
routingExample.controller('GeekController', function ($scope, $routeParams) { 
    $scope.id = $routeParams.id; 
}); 

routingExample.config(function ($routeProvider) { 
    $routeProvider. 
    when('/nerds', { 
     templateUrl: 'home.html', 
     controller: 'NerdController' 
    }). 
    when('/geek/:id', { 
     templateUrl: 'blog.html', 
     controller: 'GeekController' 
    }). 
    otherwise({ 
     redirectTo: '/nerds' 
    }); 
});