Javascript knockoutjs:afterrender导致了巨大的减速
我在knockoutjs foreach上的afterrender上启动了一些代码。它运行的对象很大(>1000个元素),我只想知道渲染何时完成 现在我正在使用找到的解决方案 但是它非常昂贵,并且会将页面挂起直到完成 afterRender处理程序是:Javascript knockoutjs:afterrender导致了巨大的减速,javascript,jquery,knockout.js,jquery-ui-sortable,Javascript,Jquery,Knockout.js,Jquery Ui Sortable,我在knockoutjs foreach上的afterrender上启动了一些代码。它运行的对象很大(>1000个元素),我只想知道渲染何时完成 现在我正在使用找到的解决方案 但是它非常昂贵,并且会将页面挂起直到完成 afterRender处理程序是: ivm.renderHandler = function(elements, data) { if (elements[1].parentNode.children.length === ko.toJS(ivm.classList).le
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()语句上,但我找不到任何加速的方法。假设
ivm.classList
是一个可观察的数组,调用ko.toJS
是相当昂贵的,因为它会对视图模型进行深度复制和展开。如果您只需要可观察阵列的长度,则可以轻松访问:
if (elements[1].parentNode.children.length === ivm.classList().length) {
赢家我知道我错过了一些明显的东西。谢谢