Mam listę obiektów (na przykład osób), a ja dynamicznie dodawać i usuwać z listy. Chcę uruchomić kwerendę na liście, gdy pewna właściwość zmieni się na dowolnym elemencie na liście.Jak mogę odsłuchać zmiany właściwości obiektów na liście za pomocą polimerowej strzałki?
Na przykład chcę wiedzieć, czy jakikolwiek obiekt na liście ma zmienioną właściwość "signedAgreement". Nie chcę ręcznie dołączać detektorów do każdego obiektu, chcę tylko poprosić o 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 model obiektowy wygląda następująco:
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;
}
}
'ListPathObserver' jest oznaczony jako przestarzały - jaki jest nowy sposób robienia tego? – mpg