2

外部コンポーネントの構成オブジェクトを作成するサービスがあります。構成プロパティの 1 つは、何らかのイベント (非角度) がトリガーされたときに呼び出されるオプションの関数です。

例 { eventHandler:function(e) { ... } }

このイベントハンドラー内で、現在のコントローラーにメッセージを送信したいと考えています。$rootService のインスタンスを取得しようとしましたが、$broadCast について認識していません。

update : コード (コードを短くするために簡略化されたバージョン)

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
     }
   }]); 
4

1 に答える 1

5

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");
            }
     }
   } 
  }]); 
于 2013-03-29T22:50:53.467 に答える