[AngularJS] Design Pattern: Simple Mediator
2024-10-10 04:46:28
We're going to use rootScope emit here to send out events and then we're going to listen for them in the run block. We're going to use rootScope on down in the run block to listen for the same event that we sent out to the system.
angular
.module('app', [])
.controller('MainCtrl', function($scope, Order) {
$scope.newOrder = function() { new Order(); };
})
.factory('Order', function($emit) {
function Order() {
this.email = 'brett.shollenberger@gmail.com';
this.product = 'Macbook Pro';
$emit('order:created', this);
}
return Order;
})
.factory('$emit', function($rootScope) {
return function() { $rootScope.$emit.apply($rootScope, arguments); };
})
.factory('Email', function($window) {
function Email(text) {
$window.alert(text);
}
return Email;
})
.run(function($rootScope, Email) {
$rootScope.$on('order:created', function(event, order) {
new Email('Email sent to ' + order.email + ' for ' + order.product);
});
});
We don't want ot inject $rootscope into Order factry, so we use mediator to create a $emit() function, and each time we create a new order, it will send the create event to run block. isnide the run block we send the email. This is good because, the order doesn't know the Email event, it onlys emits a create event.
最新文章
- 【Tips】史上最全H1B问题合辑——保持H1B身份终级篇
- golang的内置类型map的一些事
- HTTPS那些事(二)SSL证书(转载)
- dedecms在列表或首页取得文章首图的功能改进
- poj 3254 Corn Fields
- nodejs的第四天学习笔记
- 【SPI】Polling Interrupt DMA
- NSString类的相关用法
- js原型继承与多态 How to apply virtual function in javascript
- [Bug]The maximum array length quota (16384) has been exceeded while reading XML data.
- Unity3d截图保存到Android相册的实现
- OpenCV2学习笔记04:图像的读取与显示
- C#仪器数据文件解析-PDF文件
- web自动化框架如何设计
- Python机器学习笔记 K-近邻算法
- TensorFlow实战Google深度学习框架10-12章学习笔记
- react native 环境报错
- Kali安装虚拟机遇到的问题
- 【python】参数中的*args和**kwargs
- 原生的js轮播图