Knockout: Forcer un observable à se mettre à jour

Créé le 20 août 2012  ·  3Commentaires  ·  Source: knockout/knockout

Salut tout le monde,

Je suis actuellement confronté à un problème où je dois pouvoir forcer un observable à déclencher son gestionnaire de mise à jour, que la nouvelle valeur soit différente de _latestValue ou non. C'est parce que mon observable est appelé comme un rappel plutôt que déclenché directement par un événement de changement sur l'élément lié (c'est un contrôle de saisie semi-automatique personnalisé).

La solution idéale serait un drapeau "force" sur l'observable :

myObservable("nouvelle valeur", /* force = */ true)

Y a-t-un autre moyen de faire ça?

Bravo, André.

Commentaire le plus utile

les observables ont une fonction valueHasMutated que vous pouvez appeler à cette fin.

Il vous suffit de faire :

myObservable.valueHasMutated()

Tous les 3 commentaires

les observables ont une fonction valueHasMutated que vous pouvez appeler à cette fin.

Il vous suffit de faire :

myObservable.valueHasMutated()

Vous pouvez également faire en sorte que l'observable notifie toujours lorsqu'il est mis à jour :

myObservable = ko.observable().extend({notify: 'always'});
myObservable("new value");  // will notify even if the value is already "new value"

C'est probablement une bonne idée d'avoir ces deux méthodes dans la documentation.

valueHasMutated fonctionne comme un charme ! Merci les gars :-)

Cette page vous a été utile?
0 / 5 - 0 notes