| 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)'}";
|
| }
|
|
|