|
1 | 1 | part of angular.directive;
|
2 | 2 |
|
3 |
| -// NOTE(deboer): onXX functions are now typed as 'var' instead of 'Getter' |
4 |
| -// to work-around https://code.google.com/p/dart/issues/detail?id=13519 |
5 |
| - |
6 | 3 | /**
|
7 | 4 | * Allows you to specify custom behavior for DOM UI events such as mouse,
|
8 | 5 | * keyboard and touch events.
|
@@ -128,82 +125,73 @@ part of angular.directive;
|
128 | 125 | @Decorator(selector: '[ng-touchmove]', map: const {'ng-touchmove': '&onTouchMove'})
|
129 | 126 | @Decorator(selector: '[ng-touchstart]', map: const {'ng-touchstart': '&onTouchStart'})
|
130 | 127 | @Decorator(selector: '[ng-transitionend]', map: const {'ng-transitionend': '&onTransitionEnd'})
|
131 |
| - |
132 | 128 | class NgEvent {
|
133 |
| - // Is it better to use a map of listeners or have 29 properties on this |
134 |
| - // object? One would pretty much only assign to one or two of those |
135 |
| - // properties. I'm opting for the map since it's less boilerplate code. |
136 |
| - var listeners = new HashMap(); |
137 |
| - final dom.Element element; |
138 |
| - final Scope scope; |
| 129 | + // Is it better to use a map of listeners or have 29 properties on this object? One would pretty |
| 130 | + // much only assign to one or two of those properties. I'm opting for the map since it's less |
| 131 | + // boilerplate code. |
| 132 | + var listeners = new HashMap<int, BoundExpression>(); |
| 133 | + final dom.Element _element; |
| 134 | + final Scope _scope; |
139 | 135 |
|
140 |
| - NgEvent(this.element, this.scope); |
| 136 | + NgEvent(this._element, this._scope); |
141 | 137 |
|
142 |
| - // NOTE: Do not use the element.on['some_event'].listen(...) syntax. Doing so |
143 |
| - // has two downsides: |
144 |
| - // - it loses the event typing |
145 |
| - // - some DOM events may have multiple platform-dependent event names |
146 |
| - // under the covers. The standard Stream getters you will get the |
147 |
| - // platform specific event name automatically but you're on your own if |
148 |
| - // you use the on[] syntax. This also applies to $dom_addEventListener. |
149 |
| - // Ref: http://api.dartlang.org/docs/releases/latest/dart_html/Events.html |
150 |
| - initListener(var stream, var handler) { |
| 138 | + void _initListener(stream, BoundExpression handler) { |
151 | 139 | int key = stream.hashCode;
|
152 | 140 | if (!listeners.containsKey(key)) {
|
153 | 141 | listeners[key] = handler;
|
154 | 142 | stream.listen((event) => handler({r"$event": event}));
|
155 | 143 | }
|
156 | 144 | }
|
157 | 145 |
|
158 |
| - set onAbort(value) => initListener(element.onAbort, value); |
159 |
| - set onBeforeCopy(value) => initListener(element.onBeforeCopy, value); |
160 |
| - set onBeforeCut(value) => initListener(element.onBeforeCut, value); |
161 |
| - set onBeforePaste(value) => initListener(element.onBeforePaste, value); |
162 |
| - set onBlur(value) => initListener(element.onBlur, value); |
163 |
| - set onChange(value) => initListener(element.onChange, value); |
164 |
| - set onClick(value) => initListener(element.onClick, value); |
165 |
| - set onContextMenu(value) => initListener(element.onContextMenu, value); |
166 |
| - set onCopy(value) => initListener(element.onCopy, value); |
167 |
| - set onCut(value) => initListener(element.onCut, value); |
168 |
| - set onDoubleClick(value) => initListener(element.onDoubleClick, value); |
169 |
| - set onDrag(value) => initListener(element.onDrag, value); |
170 |
| - set onDragEnd(value) => initListener(element.onDragEnd, value); |
171 |
| - set onDragEnter(value) => initListener(element.onDragEnter, value); |
172 |
| - set onDragLeave(value) => initListener(element.onDragLeave, value); |
173 |
| - set onDragOver(value) => initListener(element.onDragOver, value); |
174 |
| - set onDragStart(value) => initListener(element.onDragStart, value); |
175 |
| - set onDrop(value) => initListener(element.onDrop, value); |
176 |
| - set onError(value) => initListener(element.onError, value); |
177 |
| - set onFocus(value) => initListener(element.onFocus, value); |
178 |
| - set onFullscreenChange(value) => initListener(element.onFullscreenChange, value); |
179 |
| - set onFullscreenError(value) => initListener(element.onFullscreenError, value); |
180 |
| - set onInput(value) => initListener(element.onInput, value); |
181 |
| - set onInvalid(value) => initListener(element.onInvalid, value); |
182 |
| - set onKeyDown(value) => initListener(element.onKeyDown, value); |
183 |
| - set onKeyPress(value) => initListener(element.onKeyPress, value); |
184 |
| - set onKeyUp(value) => initListener(element.onKeyUp, value); |
185 |
| - set onLoad(value) => initListener(element.onLoad, value); |
186 |
| - set onMouseDown(value) => initListener(element.onMouseDown, value); |
187 |
| - set onMouseEnter(value) => initListener(element.onMouseEnter, value); |
188 |
| - set onMouseLeave(value) => initListener(element.onMouseLeave, value); |
189 |
| - set onMouseMove(value) => initListener(element.onMouseMove, value); |
190 |
| - set onMouseOut(value) => initListener(element.onMouseOut, value); |
191 |
| - set onMouseOver(value) => initListener(element.onMouseOver, value); |
192 |
| - set onMouseUp(value) => initListener(element.onMouseUp, value); |
193 |
| - set onMouseWheel(value) => initListener(element.onMouseWheel, value); |
194 |
| - set onPaste(value) => initListener(element.onPaste, value); |
195 |
| - set onReset(value) => initListener(element.onReset, value); |
196 |
| - set onScroll(value) => initListener(element.onScroll, value); |
197 |
| - set onSearch(value) => initListener(element.onSearch, value); |
198 |
| - set onSelect(value) => initListener(element.onSelect, value); |
199 |
| - set onSelectStart(value) => initListener(element.onSelectStart, value); |
200 |
| -// set onSpeechChange(value) => initListener(element.onSpeechChange, value); |
201 |
| - set onSubmit(value) => initListener(element.onSubmit, value); |
202 |
| - set onTouchCancel(value) => initListener(element.onTouchCancel, value); |
203 |
| - set onTouchEnd(value) => initListener(element.onTouchEnd, value); |
204 |
| - set onTouchEnter(value) => initListener(element.onTouchEnter, value); |
205 |
| - set onTouchLeave(value) => initListener(element.onTouchLeave, value); |
206 |
| - set onTouchMove(value) => initListener(element.onTouchMove, value); |
207 |
| - set onTouchStart(value) => initListener(element.onTouchStart, value); |
208 |
| - set onTransitionEnd(value) => initListener(element.onTransitionEnd, value); |
| 146 | + void set onAbort(value) => _initListener(_element.onAbort, value); |
| 147 | + void set onBeforeCopy(value) => _initListener(_element.onBeforeCopy, value); |
| 148 | + void set onBeforeCut(value) => _initListener(_element.onBeforeCut, value); |
| 149 | + void set onBeforePaste(value) => _initListener(_element.onBeforePaste, value); |
| 150 | + void set onBlur(value) => _initListener(_element.onBlur, value); |
| 151 | + void set onChange(value) => _initListener(_element.onChange, value); |
| 152 | + void set onClick(value) => _initListener(_element.onClick, value); |
| 153 | + void set onContextMenu(value) => _initListener(_element.onContextMenu, value); |
| 154 | + void set onCopy(value) => _initListener(_element.onCopy, value); |
| 155 | + void set onCut(value) => _initListener(_element.onCut, value); |
| 156 | + void set onDoubleClick(value) => _initListener(_element.onDoubleClick, value); |
| 157 | + void set onDrag(value) => _initListener(_element.onDrag, value); |
| 158 | + void set onDragEnd(value) => _initListener(_element.onDragEnd, value); |
| 159 | + void set onDragEnter(value) => _initListener(_element.onDragEnter, value); |
| 160 | + void set onDragLeave(value) => _initListener(_element.onDragLeave, value); |
| 161 | + void set onDragOver(value) => _initListener(_element.onDragOver, value); |
| 162 | + void set onDragStart(value) => _initListener(_element.onDragStart, value); |
| 163 | + void set onDrop(value) => _initListener(_element.onDrop, value); |
| 164 | + void set onError(value) => _initListener(_element.onError, value); |
| 165 | + void set onFocus(value) => _initListener(_element.onFocus, value); |
| 166 | + void set onFullscreenChange(value) => _initListener(_element.onFullscreenChange, value); |
| 167 | + void set onFullscreenError(value) => _initListener(_element.onFullscreenError, value); |
| 168 | + void set onInput(value) => _initListener(_element.onInput, value); |
| 169 | + void set onInvalid(value) => _initListener(_element.onInvalid, value); |
| 170 | + void set onKeyDown(value) => _initListener(_element.onKeyDown, value); |
| 171 | + void set onKeyPress(value) => _initListener(_element.onKeyPress, value); |
| 172 | + void set onKeyUp(value) => _initListener(_element.onKeyUp, value); |
| 173 | + void set onLoad(value) => _initListener(_element.onLoad, value); |
| 174 | + void set onMouseDown(value) => _initListener(_element.onMouseDown, value); |
| 175 | + void set onMouseEnter(value) => _initListener(_element.onMouseEnter, value); |
| 176 | + void set onMouseLeave(value) => _initListener(_element.onMouseLeave, value); |
| 177 | + void set onMouseMove(value) => _initListener(_element.onMouseMove, value); |
| 178 | + void set onMouseOut(value) => _initListener(_element.onMouseOut, value); |
| 179 | + void set onMouseOver(value) => _initListener(_element.onMouseOver, value); |
| 180 | + void set onMouseUp(value) => _initListener(_element.onMouseUp, value); |
| 181 | + void set onMouseWheel(value) => _initListener(_element.onMouseWheel, value); |
| 182 | + void set onPaste(value) => _initListener(_element.onPaste, value); |
| 183 | + void set onReset(value) => _initListener(_element.onReset, value); |
| 184 | + void set onScroll(value) => _initListener(_element.onScroll, value); |
| 185 | + void set onSearch(value) => _initListener(_element.onSearch, value); |
| 186 | + void set onSelect(value) => _initListener(_element.onSelect, value); |
| 187 | + void set onSelectStart(value) => _initListener(_element.onSelectStart, value); |
| 188 | +// void set onSpeechChange(value) => initListener(element.onSpeechChange, value); |
| 189 | + void set onSubmit(value) => _initListener(_element.onSubmit, value); |
| 190 | + void set onTouchCancel(value) => _initListener(_element.onTouchCancel, value); |
| 191 | + void set onTouchEnd(value) => _initListener(_element.onTouchEnd, value); |
| 192 | + void set onTouchEnter(value) => _initListener(_element.onTouchEnter, value); |
| 193 | + void set onTouchLeave(value) => _initListener(_element.onTouchLeave, value); |
| 194 | + void set onTouchMove(value) => _initListener(_element.onTouchMove, value); |
| 195 | + void set onTouchStart(value) => _initListener(_element.onTouchStart, value); |
| 196 | + void set onTransitionEnd(value) => _initListener(_element.onTransitionEnd, value); |
209 | 197 | }
|
0 commit comments