Kreisförmige Abhängigkeit von Knockout berechnet

8

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%     
Tsar 10.04.2013, 08:07
quelle

3 Antworten

4

Ein etwas besserer und effizienterer Weg könnte das sein:

Arbeitsgeige

Html

%Vor%

JS

%Vor%

Ich hoffe, es hilft!

    
gaurav 10.04.2013, 11:37
quelle
5

Einige Kommentare zum OP:

  • Sie benötigen nicht die return -Klausel in der write -Methode von ko.computed .
  • Ihr Ansatz verwendet die Funktion 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.
  • Ihr Ansatz verwendet auch console.log() an mehreren Stellen und Sie möchten vielleicht einen anderen ko.extender verwenden, der vom Ko-Team erstellt wurde ko.extenders.logChange .
  • Anstelle von 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.

    
Mariano Desanze 19.07.2013 19:12
quelle
0

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.

Ссылка

    
Simon_Weaver 07.04.2017 19:55
quelle

Tags und Links