habe ich ein Eingabeelement, das mit einem Knockout beobachtbaren gebunden ist:Knockout.JS: Trigger basierend auf Änderungen in einer beobachtbaren
<input type="text" data-bind="value: myText, valueUpdate: 'keyup'" />
Dies aktualisiert die beobachtbare auf jeder keyup. Ich möchte jetzt zusätzliche Ereignisse auslösen, wenn sich der Wert ändert.
Die folgende tut dies im Prinzip:
this.myTextTrigger = ko.computed(function() {
console.log(this.myText());
}, this);
Es ist jedoch etwas klobig zu sein scheint. Es löst auch bei der ersten Instanziierung des Templates aus, wo ich erst danach mit Änderungen umgehen möchte. Gibt es eine offizielle/einfachere Möglichkeit, Ereignisse basierend auf Änderungen an Observablen auszulösen?
+1 für manuelle Abonnements (http://knockoutjs.com/documentation/observables.html#explicitely_subscribing_to_observables) –
Eine benutzerdefinierte Bindung scheint wie Overkill für eine einzelne Eingabe IMHO. Ein Abonnement klingt für mich nach einer besseren Wahl. –
Genau das, was ich gesucht habe. Vielen Dank! - Bezüglich der benutzerdefinierten Bindungen: Gibt es eine Möglichkeit, eine generalisierte Bindung für Felder zu haben, in denen Änderungen andere Ereignisse auslösen sollen, und diese Funktion innerhalb der Bindung im HTML auszuführen? – gzost