J'ai une table avec des données, et je veux que la vue vérifie l'instruction show.bind lorsque l'événement est déclenché à partir d'une autre vue. Le problème est que l'événement ne modifie aucune donnée dans la vue actuelle.
Foo.html:
<tr repeat.for="entity of viewData.entities"> ... <p if.bind="$parent.canBeRemoved(entity.id)"> canBeRemoved </p> ... </tr>
Je reçois l'événement avec EventAggregator et je veux qu'il force le rafraîchissement sur le tableau. C'est possible?
signal
La meilleure façon de gérer cela est d'envoyer un signal à travers le comportement de liaison du signal.
Template.html
<tr repeat.for="entity of viewData.entities"> ... <p if.bind="$parent.canBeRemoved(entity.id) & signal:'update-view'"> canBeRemoved </p> ... </tr>
ViewModel.ts
import {BindingSignaler} from 'aurelia-templating-resources'; // grab a reference to the signaler constructor(signaler: BindingSignaler) { this.signaler = signaler; } // and fire the signal event bound in your view // whenever the event is handled respondToEvent(event) { // do eventy things this.signaler.signal('update-view'); }
Vous pouvez utiliser une fonction getter. Par exemple:
JS
export class Entity { //@computedFrom('property1', 'property2') get canBeRemoved() { //your magic here //return true or false; } }
HTML
<tr repeat.for="entity of viewData.entities"> ... <p if.bind="entity.canBeRemoved"> canBeRemoved </p> ... </tr>