JavaScript使用$ scope$ emit和$ scope$ on
首先,父子范围关系确实很重要。你有两种可能性发出某些事件:
$broadcast -将事件向下分发到所有子范围,$emit-通过范围层次结构向上调度事件。我对你的控制器(作用域)关系一无所知,但是有几种选择:
如果scope of firstCtrl是作用域的父级,则secondCtrl你的代码应通过替换$emit为$broadcastin来工作firstCtrl:
function firstCtrl($scope){ $scope.$broadcast(’someEvent’, [1,2,3]);}function secondCtrl($scope){ $scope.$on(’someEvent’, function(event, mass) { console.log(mass); });}
如果你的范围之间没有父子关系,则可以注入$rootScope控制器并将事件广播到所有子范围(即secondCtrl)。
function firstCtrl($rootScope){ $rootScope.$broadcast(’someEvent’, [1,2,3]);}最后,当你需要将事件从子控制器分派到向上作用域时,可以使用$scope.$emit。如果的范围firstCtrl是范围的父级secondCtrl:
function firstCtrl($scope){ $scope.$on(’someEvent’, function(event, data) { console.log(data); });}function secondCtrl($scope){ $scope.$emit(’someEvent’, [1,2,3]);}解决方法
如何$scope使用.$emit和.$on方法将对象从一个控制器发送到另一个控制器?
function firstCtrl($scope) { $scope.$emit(’someEvent’,[1,2,3]);}function secondCtrl($scope) { $scope.$on(’someEvent’,function(mass) { console.log(mass); });}
它不按我认为的方式工作。如何做$emit和$on工作?
相关文章:
1. apache - 本地搭建wordpress权限问题2. docker 下面创建的IMAGE 他们的 ID 一样?这个是怎么回事????3. css3 - transition属性当鼠标一开的时候设置的时间不起作用4. 热切期待朱老师的回复,网页视频在线播放器插件配置错误5. macos - mac下docker如何设置代理6. Android下,rxJava+retrofit 并发上传文件和串行上传文件的效率为什么差不多?7. angular.js - ng-grid 和tabset一起用时,grid width默认特别小8. javascript - web网页版app返回上一页按钮在ios设备失效怎么办?安卓上可以,代码如下,请大神帮助,万分感谢。9. Whitelabel错误页面发生意外错误(类型=未找到,状态= 404)/WEB-INF/views/home.jsp10. java - Spring Mvc全局异常处理器@ControllerAdvice不起作用?
