Jak mogę nasłuchiwać zmian właściwości obiektów na liście za pomocą strzałki polimerowej?

Mam listę obiektów (na przykład ludzi) i dynamicznie dodaję i usuwam z listy. Chcę uruchomić zapytanie na liście, gdy pewna właściwość zmieni się na dowolnym elemencie na liście.

Na przykład chcę wiedzieć, czy jakiś obiekt na liście ma zmienioną właściwość „signedAgreement”. Nie chcę ręcznie dołączać słuchaczy do każdego obiektu, chcę tylko zapytać listę. Jak mogę to zrobić?

Mój kod:

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();
  }
}

A mój obiekt modelu wygląda tak:

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;
  }
}

questionAnswers(1)

yourAnswerToTheQuestion