2015-02-27 10 views
5

Sto usando demo di app-contacts per imparare Aurelia, sì lo so, è incompleto come menzionato da @Eisenberg, ma poi ho pensato di utilizzare EventAggregator per notificare l'app.js, quando salvo il contatta o crea un nuovo contatto. Fino ad ora tutto funziona bene. Sono in grado di ricevere l'oggetto contatto in app.js, ma ora desidero aggiornare l'elenco dei contatti, che non funziona e quando salvi un contatto e aggiorno l'elenco contatti in app.js, viene rimosso.Aggiornamento elenco in Aurelia utilizzando EventAggregator

Il codice aggiunto in app.js e il metodo subscribe viene chiamato nel costruttore.

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

Nessuna modifica fatti per 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> 

Come aggiornare l'elenco?

Aggiornamento questo ha funzionato per me, ma non sono sicuro che è l'approccio giusto

subscribe(){  
    this.ea.subscribe('contact_event', payload => { 
    return this.api.getContactList().then(contacts => { 
     this.contacts = contacts; 
    }); 
    }); 
} 
+0

Dovresti rispondere alla tua domanda e contrassegnarla come se fosse altrettanto :) Buona fortuna! –

risposta

1

Eric L. Anderson fa un grande lavoro di spiegare come funziona nel suo post sul blog: Aurelia's Event Aggregator. È un evento lo stesso tipo di codice che stai cercando di fare!

Nota: è probabilmente troppo tardi per rispondere alla domanda di Kishore, ma sto inserendo il collegamento per gli altri che finiscono qui da una ricerca.

Problemi correlati