X Tutup
Skip to content

Commit cf103de

Browse files
committed
fix(transformer): Event getters now use property name not event name
1 parent a9a552c commit cf103de

File tree

4 files changed

+23
-20
lines changed

4 files changed

+23
-20
lines changed

modules/angular2/src/transform/bind_generator/generator.dart

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ Future<String> createNgSettersAndGetters(
1515

1616
String code = ngDeps.code;
1717
var setters = _generateSetters(_createPropertiesMap(ngDeps));
18-
var getters = _generateGetters(_createEventsMap(ngDeps));
18+
var getters = _generateGetters( _createEventPropertiesList(ngDeps));
1919

2020
if (setters.isEmpty && getters.isEmpty) return code;
2121
var out = new StringBuffer();
@@ -79,35 +79,36 @@ Map<String, String> _createPropertiesMap(NgDeps ngDeps) {
7979
return bindMap;
8080
}
8181

82-
/// Consumes the map generated by {@link _createEventsMap} to codegen getters.
83-
List<String> _generateGetters(Map<String, String> bindMap) {
82+
/// Consumes the list generated by {@link _createEventPropertiesList} to codegen
83+
/// getters.
84+
List<String> _generateGetters(List<String> eventProperties) {
8485
var getters = [];
8586
// TODO(kegluneq): Include types for receivers. See #886.
86-
bindMap.forEach((getterName, eventName) {
87-
if (!prop.isValid(eventName)) {
87+
for (var property in eventProperties) {
88+
if (!prop.isValid(property)) {
8889
// TODO(kegluenq): Eagerly throw here once #1295 is addressed.
89-
getters.add(prop.lazyInvalidGetter(eventName));
90+
getters.add(prop.lazyInvalidGetter(property));
9091
} else {
91-
getters.add(''' '${prop.sanitize(eventName)}': (o) => o.$getterName''');
92+
getters.add(''' '${prop.sanitize(property)}': (o) => o.$property''');
9293
}
93-
});
94+
}
9495
return getters;
9596
}
9697

97-
/// Collapses all `events` in {@link ngDeps} into a map where the keys are
98-
/// the property names for the event emitters and the values are the event name.
99-
Map<String, String> _createEventsMap(NgDeps ngDeps) {
98+
/// Collapses all `events` in {@link ngDeps} into a list of corresponding
99+
/// property names.
100+
List<String> _createEventPropertiesList(NgDeps ngDeps) {
100101
var visitor = new ExtractNamedExpressionVisitor('events');
101-
var bindMap = {};
102+
var propertyNames = [];
102103
ngDeps.registeredTypes.forEach((RegisteredType t) {
103104
visitor.bindConfig.clear();
104105
t.annotations.accept(visitor);
105106
visitor.bindConfig.forEach((String config) {
106107
// See comments for `Directive` in annotations_impl/annotations.ts for
107-
// details on how `events` is specified.
108-
var parts = config.split(':').map((p) => p.trim()).toList();
109-
bindMap[parts[0]] = parts.length > 1 ? parts[1] : parts[0];
108+
// details on how `events` is specified. We are pulling out the property
109+
// name only (everything before the first `:`).
110+
propertyNames.add(config.split(':').first.trim());
110111
});
111112
});
112-
return bindMap;
113+
return propertyNames;
113114
}

modules/angular2/src/transform/template_compiler/reflection_capabilities.dart

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@ class NullReflectionCapabilities implements ReflectionCapabilities {
1010

1111
_notImplemented(String name) => throw 'Not implemented: $name';
1212

13-
bool isReflectionEnabled() { return false; }
13+
bool isReflectionEnabled() {
14+
return false;
15+
}
1416

1517
Function factory(Type type) => _notImplemented('factory');
1618

modules/angular2/test/transform/bind_generator/events_files/bar.ng_deps.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ void initReflector(reflector) {
1313
'parameters': const [],
1414
'annotations': const [
1515
const Directive(
16-
selector: '[tool-tip]', events: ['onOpen', 'close: onClose'])
16+
selector: '[tool-tip]', events: const ['onOpen', 'close: onClose'])
1717
]
1818
});
1919
}

modules/angular2/test/transform/bind_generator/events_files/expected/bar.ng_deps.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ void initReflector(reflector) {
1313
'parameters': const [],
1414
'annotations': const [
1515
const Directive(
16-
selector: '[tool-tip]', events: ['onOpen', 'close: onClose'])
16+
selector: '[tool-tip]', events: const ['onOpen', 'close: onClose'])
1717
]
1818
})
19-
..registerGetters({'onOpen': (o) => o.onOpen, 'onClose': (o) => o.close});
19+
..registerGetters({'onOpen': (o) => o.onOpen, 'close': (o) => o.close});
2020
}

0 commit comments

Comments
 (0)
X Tutup