我已经有一些代码在关注淘汰赛时被解雇了。它运行的对象是巨大的(> 1000个元素),我只想知道渲染完成的时间。
现在我正在使用找到的解决方案here
但它非常昂贵并挂起页面直到完成。
afterRender处理程序是:
ivm.renderHandler = function(elements, data) {
if (elements[1].parentNode.children.length === ko.toJS(ivm.classList).length) {
console.log("loaded");
$("#sortable").sortable({
revert: true
});
$(elements[1].parentNode).children().draggable({
connectToSortable: "#sortable",
helper: "clone",
revert: "invalid"
});
我很确定这是问题的if()语句,但我找不到任何方法来加快速度。
答案 0 :(得分:1)
假设ivm.classList
是一个可观察的数组,调用ko.toJS
非常昂贵,因为它会对您的视图模型进行深度复制和展开。如果您只需要可观察数组的长度,则可以轻松访问:
if (elements[1].parentNode.children.length === ivm.classList().length) {