Ho un elenco di oggetti (ad esempio, persone) e aggiungo e rimuovo dinamicamente dall'elenco. Voglio eseguire una query nell'elenco quando una determinata proprietà cambia su qualsiasi elemento nell'elenco.Come posso ascoltare le modifiche alle proprietà sugli oggetti all'interno di un elenco, con il dardo del polimero?
Ad esempio, voglio sapere se qualsiasi oggetto nell'elenco ha la sua proprietà "signedAgreement" modificata. Non voglio collegare manualmente gli ascoltatori a ciascun oggetto, voglio solo chiedere l'elenco. Come posso fare questo?
Il mio codice:
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();
}
}
E il mio oggetto del modello si presenta come:
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' è contrassegnato come deprecato - qual è il nuovo modo di farlo? – mpg