2016-12-01 104 views
0

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

+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

两个控制器内

.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

+0

让我试试这个。我会让你知道的。 –

+0

谢谢。它效果很好。 –

相关问题