2015-07-21 2 views
0

У меня есть кнопка на моей странице. Когда пользователь нажимает на моей кнопке, выполняется следующий код:Как долго существует вещание?

as.controller('CustSummary', function($scope, $rootScope, $http, $routeParams, $location) 
{ 
     var loadAbbDetails = function() 
     { 
      $rootScope.$broadcast('loadDetails'); 
     } 

     $scope.viewAbbDetails = function() 
     { 
      loadAbbDetails(); 
     } 
} 

Я прикреплял на слушателе для «loadDetails» В другом контроллере:

as.controller('CustomerCtrl', function($scope, $rootScope, $http, $routeParams, $location) 
{ 
    var loadDetails = function() 
    { 
    $scope.include = 'partials/customer/customerabbdetails.html'; 
    }; 

    $scope.$on("loadDetails",function(event,args) { 
     loadDetails(); 
    }); 
} 

Я просто удивляюсь, как долго этот слушатель " существует"? Разрушен ли он при запуске loadDetails()?

+0

Слушатель останется и прослушивает дальнейшие события 'loadDetails' даже после выполнения. – Fissio

+0

@Fissio: Okey. Потому что я попытался использовать это в другом контроллере, например: http://pastebin.com/jwYgdBcE, но ничего не происходит – Bryan

ответ

0

Как вы определили событие на $ rootScope, вы должны слушать то же самое на $ rootScope вместо $ scope. Кроме того, поскольку вы определили слушателя в области $ scope, слушатель уничтожается так же, как и объем содержащего контроллера уничтожается .i.e., CustomerCtrl.

+0

Спасибо. Я изменил это сейчас. Но как я могу снова вызвать функцию loadDetails() с другого контроллера? – Bryan

+0

Снова используя - $ rootScope. $ Broadcast ('loadDetails'); и если вы используете $ rootScope.on, то он будет прослушиваться из всех где –

+0

Когда событие транслируется с '$ rootScope', вы не обязаны слушать' $ rootScope' - '$ scope. $ on' работает так же, как и Что ж. Широковещательная передача распространяется вниз по иерархии областей. @Bryan –

Смежные вопросы