@GlobalCommand
@Command
@NotifyChange("*")
public void makeProgress(){
int progress = getProgress();
if(progress == 100){
return;
}
progress++;
Thread.sleep(100); // do some part of time consuming work
setProgress(progress);
BindUtils.postGlobalCommand(null, null, "makeProgress", null);
}
祖尔
<window apply="org.zkoss.bind.BindComposer"
viewModel="@id('vm') @init('com.javaBean')">
<progressmeter value="@bind(vm.progress)" width="300px" />
<button onClick="@command('makeProgress')"></button>
</window>
我想让用户了解已完成工作的百分比。 (我正在使用 mvvm
模型)
所以我创建了一个值为 bind 的 progressmeter
。
和一个 button
,当点击开始这个过程。
在 makeProgress()
中,我做了一些工作并发布了一个命令。
我希望它显示进度条每 100 毫秒递增 1。 但是当我尝试它时,进度条在 10 秒(100 毫秒等待 * 100)后直接显示 100%。
我错过了什么?
或者有更好的方法来做到这一点?
最佳答案
不确定是否有效。如果您需要进度条自动更新,您可能必须使用 SelectorComposer 而不是 BindComposer。 SelectComposer 可以将数据推送到客户端。您可以让计时器运行@interval 并不断更新数据。
关于java - 使用 mvvm 时如何在 zk 中更新进度表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20065391/