2015-09-07 1 views
1

Similaire à cette issue, j'essaye de configurer un observateur de tableau pour regarder un tableau de chaînes (utilisé dans un filtre ValueConverter), puis déclencher une réévaluation lorsque le tableau change.Aurelia Array Observer avec un convertisseur de valeur de filtrage

Voici ce que j'ai actuellement. Il semble fonctionner est aussi loin que lorsque vous cochez/décochez la selectedFeatures, le rappel d'observateur est invoqué. Cependant, le ValueConverter n'est jamais appelé après le chargement initial.

The Observer Array:

import {inject, ObserverLocator} from 'aurelia-framework'; 
import {HttpClient} from 'aurelia-fetch-client'; 
import 'fetch'; 

@inject(HttpClient, ObserverLocator) 
export class Home{ 
    flagPropertyName = false; 
    selectedFeatures = []; 

    constructor(http, observerLocator){ 
     var subscription = observerLocator 
      .getArrayObserver(this.selectedFeatures) 
      .subscribe(this.onFeaturesChanged); 
    } 

    <activate omitted> 

    onFeaturesChanged(mutations) { 
     this.flagPropertyName = !this.flagPropertyName; 
    } 
} 

export class FilterPlaceValueConverter { 
    toView(places, expected){ 
     console.log(JSON.stringify(expected)); 
     <code omitted> 
} 

Dans la vue:

Reliure selectedFeatures:

<label repeat.for="feature of features"> 
    <input type="checkbox" checked.bind="$parent.selectedFeatures" value.bind="feature.name" /> 
    ${feature.name} 
</label> 

Reliure la ValueConverter:

<div repeat.for="place of places | filterPlace:selectedFeatures:flagPropertyName"> 

Ma compréhension rapide w car cette mise à jour de flagPropertyName dans le rappel onFeaturesChanged forcerait repeat.for à appeler le ValueConverter à chaque fois que le tableau selectedFeatures est modifié.

Répondre

3

Et ce qu'il fixe:

constructor(http, observerLocator){ 
    observerLocator 
     .getArrayObserver(this.selectedFeatures) 
     .subscribe(() => { 
      this.testFlag = !this.testFlag; 
     }); 
+0

Serait-il possible de mettre en place un cueilleur ou similaire pour montrer un exemple complet? J'essaie de faire la même chose en utilisant bindingObserver de bindingEngine et je n'arrive pas à le faire fonctionner. Merci beaucoup d'avance. – alearg

+0

Géré pour le faire fonctionner enfin en utilisant un signal lorsque le tableau change. Je doute que ce soit la bonne approche car je n'ai trouvé aucune documentation. – alearg