2

Ich führe eine Reihe von Simulationen auf einem externen Fenster, und jedes Mal, wenn eine Simulation fertig ist, inkrementiere ich einen Fortschrittswert im Hauptfenster (alles passiert durch IPC-Kommunikation).angular-bootstrap Fortschrittsbalken Fortschritt ist inkorrekt

Die gesamte Mechanik funktioniert wunderbar, und die Ansicht über und innerhalb der Fortschrittsanzeige ist korrekt, während die Fortschrittsanzeige selbst hässliche Prozentbereiche anzeigt.

Nimmt man dies als Beispiel (das ist ein Screenshot von einem realen Fall ist): enter image description here

Die Richtlinie ist:

<uib-progressbar ng-if="typeof(progressMax) !== 'string'" 
    class="progress-striped danger" 
    max="100" 
    value="progress*100/progressMax" 
    type="danger"> 
    <i>{{progress}}/{{progressMax}} ({{progress*100/progressMax}}%)</i> 
</uib-progressbar> 

Der progressMax Wert gesetzt wird, wenn eine Taste gedrückt wird (und damit , wenn der Fortschrittsbalken angezeigt wird) und der Fortschritt beginnt bei 0 und erreicht progressMax.

Die Umwandlung ist korrekt, wie im Video gezeigt, aber anscheinend scheint die Fortschrittsanzeige es zu zeigen, wenn es 90/100 statt 90/100 ist.

Ich verwende das auf einem ElectronJS-Projekt mit Webpack und AngularJS (und Babel), nicht sicher, ob das relevant ist.

Ich habe bereits andere ähnliche Bootstrap-Probleme überprüft, aber keiner von ihnen hat mir bisher geholfen (auch die Einstellung max="progressMax" funktioniert nicht und gibt genau das gleiche Problem wieder).

+0

@isherwood: Fortschritt ist 9320, progressMax ist 10000. Anderes Beispiel: http://prntscr.com/ddptk4. Werte (ehrlich gesagt nur "Fortschritt") werden etwa alle 10 bis 20 Millisekunden aktualisiert. – briosheje

+0

Ich denke, Sie sind auf etwas mit dem Attributwert "max". 100 scheint nicht richtig zu sein. – isherwood

+0

Versuchen Sie, 'max = "{{progressMax}}" 'zu setzen. Vielleicht hast du das gemeint. – isherwood

Antwort

1

Ich habe das Problem gefunden.

Es gibt buchstäblich nichts Code-bezogen: mein Code ist korrekt.

Das Problem ist, dass {{progress}} zu schnell aktualisiert wird, so dass die Ansicht nicht genügend Zeit hat, um die Daten zu verarbeiten und zu aktualisieren.

In ähnlicher Weise könnte ein weiterer Fehler auftreten, wenn Sie eine Fortschrittsanzeige vervollständigen und nach kurzer Zeit den Fortschritt auf 0 zurückstellen: Sie werden sehen, dass der Balken rückwärts geht (von 100 auf 0) und wird schließlich gehen Sie wieder voraus, wenn der {{progress}} den aktuellen Balkenstatus erfüllt.

Die Lösung, kurz gesagt, hat das Datenerfassungsverhältnis drastisch geändert: Anstatt den Fortschrittswert häufig zu erhöhen, habe ich meinen Hauptthread so eingestellt, dass nur Sammlungen von 100 Datenpaketen gesendet werden, so dass der Fortschritt langsamer war und deshalb hätte die Ansicht genug Zeit gehabt, um zu aktualisieren.