Skip to content

Commit 233cb0f

Browse files
committed
feat(view): changed event emitters to be observables
1 parent 8b28e99 commit 233cb0f

15 files changed

Lines changed: 349 additions & 314 deletions

File tree

modules/angular2/angular2.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@ export * from './core';
33
export * from './annotations';
44
export * from './directives';
55
export * from './forms';
6+
export {Observable, EventEmitter} from 'angular2/src/facade/async';

modules/angular2/src/core/annotations/annotations.js

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -360,6 +360,30 @@ export class Directive extends Injectable {
360360
*/
361361
properties:any; // StringMap
362362

363+
/**
364+
* Enumerates the set of emitted events.
365+
*
366+
* ## Syntax
367+
*
368+
* ```
369+
* @Component({
370+
* events: ['status-change']
371+
* })
372+
* class TaskComponent {
373+
* statusChange:EventEmitter;
374+
*
375+
* constructor() {
376+
* this.complete = new EventEmitter();
377+
* }
378+
*
379+
* onComplete() {
380+
* this.statusChange.next("completed");
381+
* }
382+
* }
383+
* ```
384+
*/
385+
events:List<string>;
386+
363387
/**
364388
* Specifies which DOM hostListeners a directive listens to.
365389
*
@@ -426,18 +450,21 @@ export class Directive extends Injectable {
426450
constructor({
427451
selector,
428452
properties,
453+
events,
429454
hostListeners,
430455
lifecycle
431456
}:{
432457
selector:string,
433458
properties:any,
459+
events:List,
434460
hostListeners: any,
435461
lifecycle:List
436462
}={})
437463
{
438464
super();
439465
this.selector = selector;
440466
this.properties = properties;
467+
this.events = events;
441468
this.hostListeners = hostListeners;
442469
this.lifecycle = lifecycle;
443470
}
@@ -551,13 +578,15 @@ export class Component extends Directive {
551578
constructor({
552579
selector,
553580
properties,
581+
events,
554582
hostListeners,
555583
injectables,
556584
lifecycle,
557585
changeDetection = DEFAULT
558586
}:{
559587
selector:string,
560588
properties:Object,
589+
events:List,
561590
hostListeners:Object,
562591
injectables:List,
563592
lifecycle:List,
@@ -567,6 +596,7 @@ export class Component extends Directive {
567596
super({
568597
selector: selector,
569598
properties: properties,
599+
events: events,
570600
hostListeners: hostListeners,
571601
lifecycle: lifecycle
572602
});
@@ -634,19 +664,22 @@ export class DynamicComponent extends Directive {
634664
constructor({
635665
selector,
636666
properties,
667+
events,
637668
hostListeners,
638669
injectables,
639670
lifecycle
640671
}:{
641672
selector:string,
642673
properties:Object,
674+
events:List,
643675
hostListeners:Object,
644676
injectables:List,
645677
lifecycle:List
646678
}={}) {
647679
super({
648680
selector: selector,
649681
properties: properties,
682+
events: events,
650683
hostListeners: hostListeners,
651684
lifecycle: lifecycle
652685
});
@@ -727,12 +760,14 @@ export class Decorator extends Directive {
727760
constructor({
728761
selector,
729762
properties,
763+
events,
730764
hostListeners,
731765
lifecycle,
732766
compileChildren = true,
733767
}:{
734768
selector:string,
735769
properties:any,
770+
events:List,
736771
hostListeners:any,
737772
lifecycle:List,
738773
compileChildren:boolean
@@ -741,6 +776,7 @@ export class Decorator extends Directive {
741776
super({
742777
selector: selector,
743778
properties: properties,
779+
events: events,
744780
hostListeners: hostListeners,
745781
lifecycle: lifecycle
746782
});
@@ -846,17 +882,20 @@ export class Viewport extends Directive {
846882
constructor({
847883
selector,
848884
properties,
885+
events,
849886
hostListeners,
850887
lifecycle
851888
}:{
852889
selector:string,
853890
properties:any,
891+
events:List,
854892
lifecycle:List
855893
}={})
856894
{
857895
super({
858896
selector: selector,
859897
properties: properties,
898+
events: events,
860899
hostListeners: hostListeners,
861900
lifecycle: lifecycle
862901
});

modules/angular2/src/core/annotations/di.js

Lines changed: 1 addition & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,11 @@
11
import {CONST} from 'angular2/src/facade/lang';
22
import {DependencyAnnotation} from 'angular2/di';
33

4-
/**
5-
* Specifies that a function for emitting events should be injected.
6-
*
7-
* NOTE: This is changing pre 1.0.
8-
*
9-
* The directive can inject an emitter function that would emit events onto the directive host element.
10-
*
11-
* @exportedAs angular2/annotations
12-
*/
13-
export class EventEmitter extends DependencyAnnotation {
14-
eventName: string;
15-
16-
@CONST()
17-
constructor(eventName) {
18-
super();
19-
this.eventName = eventName;
20-
}
21-
22-
get token() {
23-
return Function;
24-
}
25-
}
26-
274
/**
285
* Specifies that a function for setting host properties should be injected.
296
*
307
* NOTE: This is changing pre 1.0.
31-
*
8+
*
329
* The directive can inject a property setter that would allow setting this property on the host element.
3310
*
3411
* @exportedAs angular2/annotations

0 commit comments

Comments
 (0)