Angularjs   发布时间:2022-04-20  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了angularjs – 如何使用$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 
});

大佬总结

以上是大佬教程为你收集整理的angularjs – 如何使用$rootScope传递对象?全部内容,希望文章能够帮你解决angularjs – 如何使用$rootScope传递对象?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。