Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(333)

Side by Side Diff: third_party/pkg/angular/demo/todo/todo.dart

Issue 148453003: Updating Angular version (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 library todo;
2
3 import 'package:angular/angular.dart';
4
5 class Item {
6 String text;
7 bool done;
8
9 Item([String this.text = '', bool this.done = false]);
10
11 bool get isEmpty => text.isEmpty;
12
13 clone() => new Item(text, done);
14
15 clear() {
16 text = '';
17 done = false;
18 }
19 }
20
21 // In 'server mode', this class fetches items from the server.
22 class ServerController {
23 Http _http;
24
25 ServerController(Http this._http);
26
27 init(TodoController todo) {
28 _http(method: 'GET', url: '/todos').then((HttpResponse data) {
29 data.data.forEach((d) {
30 todo.items.add(new Item(d["text"], d["done"]));
31 });
32 });
33 }
34 }
35
36 // An implementation of ServerController that does nothing.
37 // Logic in main.dart determines which implementation we should
38 // use.
39 class NoServerController implements ServerController {
40 init(TodoController todo) { }
41 }
42
43
44 @NgDirective(
45 selector: '[todo-controller]',
46 publishAs: 'todo'
47 )
48 class TodoController {
49 List<Item> items;
50 Item newItem;
51
52 TodoController(ServerController serverController) {
53 newItem = new Item();
54 items = [
55 new Item('Write Angular in Dart', true),
56 new Item('Write Dart in Angular'),
57 new Item('Do something useful')
58 ];
59
60 serverController.init(this);
61 }
62
63 // workaround for https://github.com/angular/angular.dart/issues/37
64 dynamic operator [](String key) {
65 if (key == 'newItem') {
66 return newItem;
67 }
68 return null;
69 }
70
71 add() {
72 if (newItem.isEmpty) return;
73
74 items.add(newItem.clone());
75 newItem.clear();
76 }
77
78 markAllDone() {
79 items.forEach((item) => item.done = true);
80 }
81
82 archiveDone() {
83 items.removeWhere((item) => item.done);
84 }
85
86 String classFor(Item item) {
87 return item.done ? 'done' : '';
88 }
89
90 int remaining() {
91 return items.where((item) => !item.done).length;
92 }
93 }
OLDNEW
« no previous file with comments | « third_party/pkg/angular/demo/todo/todo.css ('k') | third_party/pkg/angular/demo/todo/web/bootstrap.css » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698