2016-12-01 9 views
0

ng-clickでモジュールAでトリガされたスコープ機能があります。今度は別のモジュールBでこのスコープ関数を呼びたいと思います。$ブロードキャストと$を使用していますが、2回実行していて正しく動作していません。しかし、モジュールAのボタンを使用してそのスコープ関数を呼び出すと、それは機能しています。私はモジュールBangularjs内の別のモジュールのコントローラから1つのモジュールのコントローラ機能を呼び出す

+0

代わりにサービスを使用するhttps://docs.angularjs.org/guide/services – EmptyCup

+0

サービスからコントローラ関数を呼び出すにはどうすればよいですか? –

+0

https://codedump.io/share/iDilTj9GKGnV/1/global-communication-in-angular-module-event-bus-or-mediator-patternservice – EmptyCup

答えて

1

からこの関数の呼び出しは、あなたのコントローラーコントローラーのB

.factory('messageService', 
function() { 
    var messageService = {}; 
    var listeners = {}; 
    var count = 0; 
    messageService.registerListener = function (listener) { 
    listeners[count] = listener; 
    count++; 
    return (function (currentCount) { 
     return function() { 
     delete listeners[currentCount]; 
     }; 
    })(count); 
    }; 
    messageService.broadcastMessage = function (message) { 
    var keys = Object.keys(listeners); 
    for (var i = 0; i < keys.length; i++) { 
     listeners[keys[i]](message); 
    } 
    }; 
    return messageService; 
}) 
あなたのコントローラで

messageService.broadcastMessage(...) 

の両方で依存関係としてこれを追加必要

function callBackFunction(){ 
    ... 
} 
messageService.registerListener(callBackFunction) 

original answer

+0

これを試してみましょう。お知らせいたします。 –

+0

ありがとうございます。それは素晴らしい作品です。 –

関連する問題