| <!DOCTYPE html> |
| <!-- |
| Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| for details. All rights reserved. Use of this source code is governed by a |
| BSD-style license that can be found in the LICENSE file. |
| --> |
| |
| <html> |
| <body> |
| <template id="test" repeat="{{ keyPress | collect }}"> |
| <div>key: {{ }}</div> |
| </template> |
| <script type="application/dart"> |
| import 'dart:async'; |
| import 'dart:html'; |
| import 'package:polymer_expressions/polymer_expressions.dart'; |
| import 'package:polymer_expressions/async.dart'; |
| import 'package:template_binding/template_binding.dart'; |
| import 'package:observe/observe.dart'; |
| |
| Iterable collect(StreamBinding s) { |
| var list = new ObservableList(); |
| s.stream.listen((e) { list.add(e); }); |
| return list; |
| } |
| |
| main() { |
| var globals = { |
| 'keyPress': document.onKeyPress |
| .map((e) => new String.fromCharCode(e.charCode)), |
| 'collect': collect, |
| }; |
| |
| templateBind(query('#test')) |
| ..bindingDelegate = new PolymerExpressions(globals: globals) |
| ..model = null; |
| } |
| </script> |
| <script src="packages/browser/dart.js"></script> |
| </body> |
| </html> |