我有一个名为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 });
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。