Wie kann ich mit Polymer-Dart auf Änderungen der Eigenschaften von Objekten in einer Liste warten?

Ich habe eine Liste von Objekten (z. B. Personen) und füge sie dynamisch hinzu und entferne sie aus der Liste. Ich möchte eine Abfrage in der Liste ausführen, wenn sich eine bestimmte Eigenschaft für ein Element in der Liste ändert.

Ich möchte beispielsweise wissen, ob die Eigenschaft "signedAgreement" eines Objekts in der Liste geändert wurde. Ich möchte nicht jedem Objekt manuell Listener zuweisen, sondern nur die Liste abfragen. Wie kann ich das machen?

Mein Code:

library my_element;

import 'package:polymer/polymer.dart';
import 'dart:html';
import 'models.dart';

@CustomTag("my-element")
class MyElement extends PolymerElement with ObservableMixin {
  final List people = toObservable([]); // observe adds/removes to the list
  final Person newPerson = new Person();

  // How can I know when to re-evaluate signedCount?

  int get signedCount => people.where((Person p) => p.signedAgreement).length;

  void save(Event e, var detail, Node target) {
    people.add(new Person.from(newPerson));
    newPerson.blank();
  }
}

Und mein Modellobjekt sieht so aus:

library models;

import 'package:polymer/polymer.dart';

class Person extends Object with ObservableMixin {
  @observable String name;
  @observable bool signedAgreement = false;

  Person();

  Person.from(Person other) {
    name = other.name;
    signedAgreement = other.signedAgreement;
  }

  blank() {
    name = '';
    signedAgreement = false;
  }
}

Antworten auf die Frage(1)

Ihre Antwort auf die Frage