Force show.binding execution

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?

Utilisez le comportement de liaison de 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>