【问题标题】:broadcast and emit does not work with ng-router?广播和发射不适用于 ng-router?
【发布时间】:2017-09-05 17:45:28
【问题描述】:

我想将值传递给一个书呆子控制器到极客控制器,但无法传递 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"})
}

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

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

【问题讨论】:

    标签: angularjs broadcast emit


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2021-12-07
      • 1970-01-01
      • 2017-08-02
      • 2017-07-30
      • 2016-10-17
      • 2014-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多