在angularjs

时间:2016-12-01 11:32:06

标签: angularjs

有一个范围功能,通过ng-click在模块A中触发。现在我想通过另一个模块B调用此范围函数。我正在使用 $ broadcast 和$ on但它正在执行两次并且无法正常工作。但是当我在模块A中使用按钮并调用该范围函数时,它正在工作。 我需要从模块B调用此函数。

1 个答案:

答案 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)

original answer