环境:angular.js+sastruts+apache-tomcat
angular.js中当使用路由时,控制器之间通信使用$on,$emit,$boardcast方式实现时,子控制器监听不到父级$boardcast的事件!存在的问题,求解!!并提供的一个解决方法。
如下code, test01Controller控制器中的的变量可以$emit到父控制器(mainController)中,父控制器也可以$on监听到事件,但是,父控制器中$boardcast事件时,子控制器却不可以$on监听到事件。
controller.jsangular.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
...
目前的一个解决方案是使用$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
初学求解。
以上。