web-dev-qa-db-fra.com

Abonnement au changement de propriété avec Aurelia

J'ai une propriété sur mon modèle de vue que je veux écouter et déclencher des événements en fonction de sa valeur, comme ceci:

class viewModel {
  constructor() {
    this.value = '0';
    let val = 2;
    subscribe(this.value, callbackForValue);
    subscribe(val, callbackForVal);
  }
}

Est-ce une caractéristique d'Aurelia? Si c'est le cas, comment pourrais-je configurer un tel abonnement?

34
Matthew James Davis

L'attribut observable a moins de surcharge pour la liaison selon je tue les nerds .

import {observable} from "aurelia-framework";

export class Example {

    @observable
    public description: string;

    private descriptionChanged(newValue: string, oldValue: string): void {

    }
}
13
sharky101

écouter et déclencher des événements en fonction de sa valeur

Un extrait de code utilisant TypeScript, j'espère que cela vous donnera une idée:

import {bindingMode} from "aurelia-binding";

export class Example{

    @bindable
    public description: string;

    private descriptionChanged(newValue: string, oldValue: string): void {
        console.log(newValue, oldValue);
    }
}

Le nom de la méthode doit suivre la convention `${propertyName}Changed`


EDIT: C'est exactement ce que Decade Moon suggéré dans le commentaire ci-dessus: Abonnement au changement de propriété avec Aurelia

11
Mars Robertson

Le @observable le décorateur fonctionne bien pour ce scénario.

Vous pouvez utiliser le BindingEngine pour regarder une collection ou contrôler quand vous abonner/vous désabonner

2
Andrew