Javascript Angular.js-从控制器外部调用作用域函数?

Javascript Angular.js-从控制器外部调用作用域函数?,javascript,angularjs,addeventlistener,Javascript,Angularjs,Addeventlistener,我是angular.js的新手,试图弄清楚如何将json对象从偶数处理程序传递到控制器(或服务?)中的作用域函数。我希望事件监听器位于所有控制器之外,等等,因为我喜欢只打开事件处理程序来监听所有事件的约定,而不是每个事件都有几个事件监听器。如何使用Angular.js执行此操作 客户端代码: var source = new EventSource('/subscribe'); source.addEventListener('open', function(e) { console.

我是angular.js的新手,试图弄清楚如何将json对象从偶数处理程序传递到控制器(或服务?)中的作用域函数。我希望事件监听器位于所有控制器之外,等等,因为我喜欢只打开事件处理程序来监听所有事件的约定,而不是每个事件都有几个事件监听器。如何使用Angular.js执行此操作

客户端代码:

var source = new EventSource('/subscribe');

source.addEventListener('open', function(e) {
    console.log("connection was opened");
});
//Not using multi-listeners for each event.  
source.addEventListener('message', function(e) {
    var result = JSON.parse(e.data);
    event = Object.keys(result)[0];
    if (event == "cpuResult") {
        //call the function of cpuScope 
        //pass json into it
        } else if if (event == "networkResult") {
             //call the function of neworkScope
       and so on....
});

source.addEventListener('error', function(e) {
  if (e.readyState == EventSource.CLOSED) {
  }
}, 
假)

rough angular.js示例:

   function cpuCtrl($scope) {

        // the last received msg
        $scope.msg = {};


        var updateElement = function (msg) {
            $scope.$apply(function () {
                $scope.msg = JSON.parse(msg.data)
            });
        }

     }

最糟糕的答案是给你一个与你尝试过的东西一起工作的扑克牌。相反,我认为您应该阅读angular服务和依赖注入,从服务开始:并了解其余的内容。如果仍然有问题,请返回:)我想我明白了……我可以创建一个包含事件侦听器的服务。如果我向每个控制器注入相同的服务,是否会有多个事件侦听器?或者它仍然只是客户端中的一个eventlistener?取决于您的实现。我能想到的最好的实现是让您的服务公开一个“register”函数,每个控制器都可以调用该函数,并将其作为参数进行回调。该服务将保留一个回调数组。该服务将有一个事件侦听器,当它触发时,它将逐个调用所有回调。这也可以通过包含一个“取消注册”函数来改进,当控制器不再希望在事件触发时调用其回调时,您将返回该函数。