Siehe Arbeiten jsFiddle: Ссылка
Ich habe 3 Felder: Nettopreis (ohne Steuern), Steuerbetrag und Gesamtpreis (Preis ohne Mehrwertsteuer + Steuerbetrag). Der NetPrice und der Total sind beschreibbar, d. h. Sie können beide ändern und die anderen 2 Werte müssen automatisch berechnet werden.
Wie ich es gemacht habe, verwende ich 3 beobachtbare und 2 berechnete Knockout-Objekte, aber ich dachte, dass jemand, der Knockout viel besser kennt, einen effizienteren Weg vorschlagen könnte, dies zu erreichen.
html:
%Vor%Skript:
%Vor%Einige Kommentare zum OP:
return
-Klausel in der write
-Methode von ko.computed
. Number()
an mehreren Stellen und Sie möchten diese möglicherweise ändern, um eine bestimmte Genauigkeit (oder einen zentralen Ort für die Validierung von Benutzereingaben) zu erhalten. Sie können also ko.extenders verwenden, um das zu verbessern. Und ich würde ausdrücklich den Extender empfehlen, der bereits vom Ko-Team namens ko.extenders.numeric
erstellt wurde. console.log()
an mehreren Stellen und Sie möchten vielleicht einen anderen ko.extender verwenden, der vom Ko-Team erstellt wurde ko.extenders.logChange
. ko.computed
in diesem Fall ist es besser, subscribe
zu verwenden Nimm weniger Code (und wahrscheinlich unwesentlich schneller). Mein Ansatz wäre dies:
%Vor%Sie können die Arbeitsgeige hier sehen: Ссылка
Beachten Sie, dass die Zahlen in dieser Lösung niemals mehr Dezimalstellen als die auf den numerischen Extendern angegebenen haben (selbst der vom Benutzer eingegebene Wert wird automatisch auf die gewünschte Genauigkeit festgelegt).
Und ich vergleiche meine Antwort mit der aktuell akzeptierten Antwort von Gaurav (was auch sehr schön und einfach ist): Ich denke, der Hauptvorteil meiner Vorgehensweise ist, dass Sie diese fantastischen Extender benutzen können.
Kann nicht versprechen, dass dies das Problem beheben wird, aber manchmal kann das Aktivieren von verzögerten Updates Probleme wie diese beheben.
Es ist ein gutes Feature, das Sie beachten sollten, aber seien Sie vorsichtig, es für eine bereits funktionierende Anwendung zu aktivieren - und auch wenn Sie ein zugrunde liegendes Problem haben, dann wollen Sie das immer noch beheben.
Tags und Links knockout.js javascript