有一个范围功能,通过ng-click在模块A中触发。现在我想通过另一个模块B调用此范围函数。我正在使用 $ broadcast 和$ on但它正在执行两次并且无法正常工作。但是当我在模块A中使用按钮并调用该范围函数时,它正在工作。 我需要从模块B调用此函数。
答案 0 :(得分:1)
在控制器
中添加此作为依赖项.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;
})
控制器A中的
messageService.broadcastMessage(...)
在您的控制器B
function callBackFunction(){
...
}
messageService.registerListener(callBackFunction)