2013-03-29 3 views
1

У меня есть служба, которая создает объект конфигурации для внешнего компонента. Одним из свойств конфигурации является дополнительная функция, которая вызывается, когда запускается какое-то событие (не угловое).angularjs отправить сообщение из службы

например. { EventHandler: функция (е) {...}}

Внутри EventHandler Я хочу, чтобы отправить сообщение в текущем контроллере. Я попытался получить экземпляр $ rootService, но он не знает о $ broadCast.

обновление: код (упрощенная версия, чтобы сохранить код короткий)

app.service('componentService',['$rootScope', 
    function($rootScope) { 
    this.getConfig = function() { 
     return { 
      transition:true, 
      ... // other config parameters 
      clickHandler:function(e) { // event called by external library, e = event args 
       $rootScope.$broadCast("myEvent",e.value); 
      }; 
    }; 
    return { 
     getConfig : this.getConfig 
    } 
    }]); 
+1

Пожалуйста, покажите часть вашего кода сервиса (например, это инъекционные $ rootScope?) И код обработчика событий. –

ответ

4

http://plnkr.co/edit/BK4Vjk?p=preview

Отъезд пример, который я сделал выше. Он должен работать.

В вашем фрагменте кода есть несколько синтаксических ошибок. Я не был уверен, было ли это потому, что вы просто быстро набрали его или действительно там.

В основном:

app.controller('MainCtrl', function($scope, componentService) { 
    var config = componentService.getConfig(); 
    $('#nonAngular').bind('click', config.clickHandler); 
    $scope.$on('myEvent', function(e, value) { 
    console.log('This is the angular event ', e); 
    console.log('This is the value ', value) 
    }); 
}); 

app.service('componentService',['$rootScope', 
    function($rootScope) { 
    this.getConfig = function() { 
     return { 
      transition:true, 
      clickHandler:function(e) { // event called by external library, e = event args 
       $rootScope.$broadcast("myEvent", "Some value you're passing to the event broadcast"); 
      } 
    } 
    } 
    }]); 
Смежные вопросы