2014-01-25 3 views
4

У меня есть одна функция с именем 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. 
}) 

ответ

16

1) Если ваши контроллеры родитель-ребенок, и вы 're emitting событие от дочернего контроллера, вам просто нужно $ emit событие, и родительский контроллер просто использует $ 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) Если ваши контроллеры являются братьями и сестрами

От Вашего контроллер, вы $emit событие в область родителя , Сфера

$scope.SaveDB(iObj,function(iResult){ 

    $scope.$emit('saveCallback',iResult); 
}); 

вашего родителя, то прислушивается к этому событию и $broadcast его в детей. Этот метод может быть записан внутри .run блока углового модуля

$scope.$on('saveCallback',function (event,iresult){ 
    $scope.$broadcast('saveCallback',iresult); 
}); 

Или вы можете впрыснуть $ rootScope к контроллеру и его $ транслировать событие:

$scope.SaveDB(iObj,function(iResult){ 
    $rootScope.$broadcast('saveCallback',iResult); 
}); 

Объемы заинтересованного в том случае, могут подписаться на него:

$scope.$on('saveCallBack',function(event, data) { 
    //access data here 
}); 
2

Вы должны сделать

$rootScope.$broadcast('saveCallback',iresult); 

и где вы хотите, чтобы поймать

$scope.$on('saveCallBack',function(event, data) { 
    //access data here 
}); 
Смежные вопросы