angular-bootstrap progressbar 进度显示不正确

angular-bootstrap progressbar progress shown is incorrect

我运行在外部window上进行了一系列模拟,每次模拟完成后,我都会在主window上增加一个进度值(一切都通过IPC发生通讯)。

整个机制运行良好,进度条上方和内部的视图是正确的,而进度条本身显示丑陋的百分比区域。

以此为例(真实案例截图):

指令是:

<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>

progressMax 值在按下按钮时设置(因此在显示进度条时),进度从 0 开始并达到 progressMax。

转换已正确完成,如视频所示,但显然,进度条显示的似乎是 90/1000 而不是 90/100。

我 运行 在一个使用 Webpack 和 AngularJS(和 Babel)的 ElectronJS 项目上,我不确定这是否相关。

我已经检查过其他类似的 bootstrap 问题,但到目前为止没有一个对我有帮助(另外,设置 max="progressMax" 也不起作用并重现了同样的问题)。

我找到问题了。

实际上没有任何代码相关:我的代码是正确的。

问题是 {{progress}} 更新太快,因此视图没有足够的时间来处理和更新数据。

同样,如果您完成一个进度条并且在短时间后将其进度设置为 0,则可能会遇到另一个错误:您会看到进度条倒退(从 100 到 0),并且当 {{progress}} 符合当前栏状态时,最终再次继续。

简而言之,解决方案是彻底改变数据收集比率:我没有频繁增加进度值,而是将我的主线程设置为仅发送 100 个数据包的集合,这样进度增加是速度较慢,因此视图有足够的时间进行更新。