Używam demo app-kontaktów, aby dowiedzieć Aurelia, tak wiem, to niekompletne, jak wspomniano przez @Eisenberg, ale potem myślałem, aby użyć EventAggregator powiadomić app.js, kiedy zapiszę skontaktuj się lub utwórz nowy kontakt. Do tej pory wszystko działa dobrze. Mogę otrzymać obiekt kontaktu w app.js, ale teraz chciałbym zaktualizować listę kontaktów, która nie działa, a kiedy zapisuję kontakt i aktualizuję listę kontaktów w app.js, zostaje on usunięty.Aktualizacja listy w Aurelia przy użyciu EventAggregator
Kod dodany w app.js i metodzie subskrypcji jest wywoływany w konstruktorze.
subscribe(){
this.ea.subscribe('contact_event', payload => {
console.log(payload);
var instance = JSON.parse(JSON.stringify(payload));
let found = this.contacts.filter(x => x.id == payload.id)[0];
if(found){
let index = this.contacts.indexOf(found);
this.contacts[index] = instance;
}else{
instance.id = this.contacts.length + 1;
this.contacts.push(instance);
}
});
}
wprowadzone żadne zmiany app.html
<li repeat.for="contact of contacts" class="list-group-item ${contact.id === $parent.selectedId ? 'active' : ''}">
<a href="#" click.delegate="$parent.select(contact)">
<h4 class="list-group-item-heading">${contact.firstName} ${contact.lastName}</h4>
<p class="list-group-item-text">${contact.email}</p>
</a>
</li>
Jak zaktualizować listę?
Aktualizacja ten pracował dla mnie, ale nie wiem, co jest właściwe podejście
subscribe(){
this.ea.subscribe('contact_event', payload => {
return this.api.getContactList().then(contacts => {
this.contacts = contacts;
});
});
}
Powinieneś odpowiedzieć na swoje własne pytanie i oznaczyć je jako również annwered :) Powodzenia! –