Index: example/todomvc/model.dart |
diff --git a/example/todomvc/model.dart b/example/todomvc/model.dart |
index 7bb52f5ce5528143a1f997010395525ed63657f0..8b12ee1b120f3242fd6b63e070976cb1f4c90509 100644 |
--- a/example/todomvc/model.dart |
+++ b/example/todomvc/model.dart |
@@ -4,7 +4,10 @@ |
library model; |
-class ViewModel { |
+import 'package:web_ui/observe.dart'; |
+ |
+@observable |
+class ViewModel extends Observable { |
bool isVisible(Todo todo) => todo != null && |
((showIncomplete && !todo.done) || (showDone && todo.done)); |
@@ -17,8 +20,9 @@ final ViewModel viewModel = new ViewModel(); |
// The real model: |
-class AppModel { |
- List<Todo> todos = <Todo>[]; |
+@observable |
+class AppModel extends Observable { |
+ ObservableList<Todo> todos = new ObservableList<Todo>(); |
// TODO(jmesserly): remove this once List has a remove method. |
void removeTodo(Todo todo) { |
@@ -41,17 +45,22 @@ class AppModel { |
int get remaining => todos.length - doneCount; |
void clearDone() { |
- todos = todos.where((t) => !t.done).toList(); |
+ // TODO(jmesserly): should methods on ObservableList return Observables? |
+ todos = new ObservableList.from(todos.where((t) => !t.done)); |
} |
} |
final AppModel app = new AppModel(); |
-class Todo { |
+@observable |
+class Todo extends Observable { |
String task; |
bool done = false; |
- Todo(this.task); |
+ Todo(String task) { |
+ // TODO(jmesserly): fix @observable so "Todo(this.task)" works. |
+ this.task = task; |
+ } |
String toString() => "$task ${done ? '(done)' : '(not done)'}"; |
} |