广播和发射不适用于ng-router?

时间:2017-09-05 17:45:29

标签: angularjs broadcast emit

我希望将值传递给一个书呆子控制器到极客控制器,但无法传入ng-router。

<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'
})

在Nerds控制器中我有这个功能

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

在极客控制器中我收到页面加载本身的值,但我没有得到值pls帮我找到解决方案

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

1 个答案:

答案 0 :(得分:0)

NerdControllerGeekController位于两个单独的页面中,一次只能有一个控制器处于活动状态,因为angular只有一个页面在选项卡中打开。所以我建议将变量作为参数传递给路线,你可以在下面的例子中看到这一点。

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'
    });
});