1

如果您有一个列表和一个计数标签。当每个项目被推入视图模型数组时,如何实时渲染每一行并使用新计数增加标签?

对我来说,显示的列表仍然是空的,计数为 0,整个 UI 被阻塞,而 viewmodel 数组被填充,然后当每个项目被推入数组时,列表中的所有行都会突然显示最终数字在计数标签中。

4

1 回答 1

0

您的 UI 被阻塞是非常合乎逻辑的,因为 JavaScript 是单线程的。因此,使用 foreach 将阻止脚本执行的其余部分。

对此的快速解决方法是使用 setTimeout 来延迟代码块的执行。例如,如果您使用:

for (var i=0;i< totalGifts;i++) {
    setTimeout(function(){
        self.gifts.push({name: "New Gift " + i, price: "New Price: " + i});
    },1);            
}

每次更新都会延迟 1 毫秒并异步触发,因此不会阻塞您的 UI。我已经更新了你的小提琴,检查一下

于 2012-07-31T07:42:47.943 回答