angularjs – 如何使用$rootScope传递对象?
发布时间:2020-12-17 06:57:35 所属栏目:安全 来源:网络整理
导读:我有一个名为saveInDB的函数.这将数据保存在数据库中.对象作为参数传递给函数. $scope.SaveDB(iObj,function(iResult){//after a sucessfull opreation in the DB. Now I need iObj to be passed to other controller.// I have used $emit method$rootScope
我有一个名为saveInDB的函数.这将数据保存在数据库中.对象作为参数传递给函数.
$scope.SaveDB(iObj,function(iResult){ //after a sucessfull opreation in the DB. Now I need iObj to be passed to other controller. // I have used $emit method $rootScope.$emit('saveCallback'); }) 在其他控制器中,我需要访问iObj到其他控制器.我没有得到这个对象.在我的控制器中 var _save = $rootScope.$on('saveCallback',function(){ //i want same obj(which is used for saving ) to be access here. }) 解决方法
1)如果您的控制器是父子,并且您从子控制器发出事件,您只需要$发出事件,而父控制器只使用$on来监听它.
从子控制器发出事件: $scope.SaveDB(iObj,function(iResult){ $scope.$emit('saveCallback',iResult); //pass the data as the second parameter }); 听取事件(在父控制器中): $scope.$on('saveCallback',function(event,iResult){//receive the data as second parameter }); 2)如果您的控制器是兄弟姐妹 从您的控制器,您$将事件发送到父级的范围. $scope.SaveDB(iObj,function(iResult){ $scope.$emit('saveCallback',iResult); }); 然后,您父母的范围将侦听此事件并将其广播给其子节点.这个方法可以写在角度模块的.run块内 $scope.$on('saveCallback',function (event,iresult){ $scope.$broadcast('saveCallback',iresult); }); 或者你可以将$rootScope注入控制器并让它广播事件: $scope.SaveDB(iObj,function(iResult){ $rootScope.$broadcast('saveCallback',iResult); }); 对活动感兴趣的范围可以订阅: $scope.$on('saveCallBack',data) { //access data here }); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |