Javascript Angular.js-从控制器外部调用作用域函数?
我是angular.js的新手,试图弄清楚如何将json对象从偶数处理程序传递到控制器(或服务?)中的作用域函数。我希望事件监听器位于所有控制器之外,等等,因为我喜欢只打开事件处理程序来监听所有事件的约定,而不是每个事件都有几个事件监听器。如何使用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.
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”函数,每个控制器都可以调用该函数,并将其作为参数进行回调。该服务将保留一个回调数组。该服务将有一个事件侦听器,当它触发时,它将逐个调用所有回调。这也可以通过包含一个“取消注册”函数来改进,当控制器不再希望在事件触发时调用其回调时,您将返回该函数。