angular.js使用路由时,子控制器监听不到父级$boardcast的事件

环境:angular.js+sastruts+apache-tomcat

angular.js中当使用路由时,控制器之间通信使用$on,$emit,$boardcast方式实现时,子控制器监听不到父级$boardcast的事件!存在的问题,求解!!并提供的一个解决方法。

如下code, test01Controller控制器中的的变量可以$emit到父控制器(mainController)中,父控制器也可以$on监听到事件,但是,父控制器中$boardcast事件时,子控制器却不可以$on监听到事件。

controller.js
angular.module('mainApp', ['ngRoute']).config([ '$routeProvider', 
    function($routeProvider) {
    $routeProvider.when('/test01', {
    templateUrl : 'test01.html',
    controller: 'test01Controller'
    }).when('/test01Result', {
        templateUrl : 'test01Result.html',
        controller: 'test01ResultController'
    }).otherwise({
        redirectTo : '/grid'
    });
} ]);
html
<!DOCTYPE html>
<html>
    <head>
    ...
    </head>
    <body ng-app="mainApp" ng-controller="mainController">
        <div ng-view></div>
    </body>
</html>


目前的一个解决方案是使用$on,$emit,$boardcast方式和作用域的继承方式相结合的方式实现,没有通过$rootScope实现。

test01Controller.js

// 控制器间值传递案①
$scope.$emit("test01Result", obj.resultJson);
$window.location.href = "#/test01Result";
test01ResultController.js
// 控制器间值传递案①
//alert($scope.test01Result);
$scope.test01VForm = angular.fromJson($scope.test01Result);
mainController.js
$scope.$on("test01Result", function(e, obj) {
    $scope.test01Result = obj;
});
即,子控制器将变量$emit到父控制器中,父控制器$on监听到事件后,将此变量赋值给父$scope一个的变量中,这个父$scope变量可以在其子控制器得到该值。


讨论帖:http://www.oschina.net/question/1050450_174578


初学求解。

以上。


转载于:https://my.oschina.net/wangbiglei/blog/326963

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值