博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
angular.js使用路由时,子控制器监听不到父级$boardcast的事件
阅读量:6815 次
发布时间:2019-06-26

本文共 1285 字,大约阅读时间需要 4 分钟。

hot3.png

环境: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
        ...                

目前的一个解决方案是使用$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

你可能感兴趣的文章
阿里云跨地域访问私网
查看>>
通过angularJS官方案例快速入门
查看>>
Introduction of OpenCascade Foundation Classes
查看>>
Surface Normal Vector in OpenCascade
查看>>
Educational Codeforces Round 38 (Rated for Div. 2)
查看>>
内部类初识
查看>>
【python3的学习之路一】输入和输出
查看>>
在Eclipse中生成接口的JUnit测试类
查看>>
Oracle SQL常用内置系统函数总结
查看>>
[POJ] #1005# I Think I Need a Houseboat : 浮点数运算
查看>>
西湖论剑WP
查看>>
数组Array,集合List与字符串String,整形int的get类方法。
查看>>
【转】浏览器内核
查看>>
面试题:查找旋转数组中的某一元素
查看>>
uva12298(生成函数)
查看>>
C++ variable_template
查看>>
第十七章、程序管理与 SELinux 初探 工作管理 (job control)
查看>>
2016年新年伊始
查看>>
DataTable循环删除行
查看>>
字符串2
查看>>