使用AngularJS发布订阅服务
Publish Subscribe service using AngularJS
我正在使用此代码创建一个工厂,用于在控制器、指令和服务之间发布和订阅消息。
angular.module('app', []);
angular.module('app').controller('TheCtrl', function($scope, NotifyingService) {
$scope.notifications = 0;
$scope.notify = function() {
NotifyingService.publish();
};
// ... stuff ...
NotifyingService.subscribe($scope, function somethingChanged() {
// Handle notification
$scope.notifications++;
});
});
angular.module('app').factory('NotifyingService', function($rootScope) {
return {
subscribe: function(scope, callback) {
var handler = $rootScope.$on('notifying-service-event', callback);
scope.$on('$destroy', handler);
},
publish: function() {
$rootScope.$emit('notifying-service-event');
}
};
});
它运行良好,但我想在发布时将数据传递给订阅它的人,我该怎么做。假设我想发布一个值4,我该如何执行?
如果我理解正确,您希望将值4
发布到'notifying-service-event'
,并且希望在订阅服务器中使用该值。
为了发布一个值,您需要将它传递给emit
函数。
publish: function(msg) {
$rootScope.$emit('notifying-service-event', msg);
}
然后,在使用此发布函数时,传递所需的值。
node.on("click", click);
function click() {
NotifyingService.publish(4);
}
处理subscribe
事件时:
NotifyingService.subscribe($scope, function somethingChanged(event,msg) {
console.log(msg); //4
scope.number = msg //or whatever you want
scope.$apply();
});
您可以在此处找到完整的示例:https://plnkr.co/edit/CnoTA0kyW7hWWjI6DspS?p=preview
这是对这个问题的回答:在AngularJS 中显示有关气泡图D3.js的信息
相关文章:
- 如何使用WCF服务和javascript表单post上传.doc文件
- 监视函数从服务返回不起作用,但作用域函数起作用
- 通过Magento的网络服务检索运费
- 在同一个服务工作者中处理service-worker.js有任何影响吗
- 使用angular.js问题的JavaSpringREST服务
- AngularJS-需要在index.html页面中访问来自服务的数据
- 如何在Ionic2测试版中包含Ionic.io服务
- 基于api密钥的NodeJS web服务
- Redux应用程序结构-在哪里放置服务/业务逻辑
- Liferay:从portlet调用JSON服务
- 使用javascript在客户端上使用Web服务
- 如何通过安全的https连接在javascript中使用基于soap xml的Web服务
- 从Javascript连接到SOAP Web服务
- 如何检测服务广告维度
- 很少有角服务,只有常数不同
- 使用AngularJS发布订阅服务
- 创建订阅服务以通过邮件传递报告
- 发布/订阅设计模式 angularjs 服务
- AWS SNS网络服务订阅-快速发布,新浪举例
- 如何在Angular2的服务上订阅活动