knockoutjs:后退导致大幅放缓

时间:2014-02-26 22:53:34

标签: javascript jquery knockout.js jquery-ui-sortable

我已经有一些代码在关注淘汰赛时被解雇了。它运行的对象是巨大的(> 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()语句,但我找不到任何方法来加快速度。

1 个答案:

答案 0 :(得分:1)

假设ivm.classList是一个可观察的数组,调用ko.toJS非常昂贵,因为它会对您的视图模型进行深度复制和展开。如果您只需要可观察数组的长度,则可以轻松访问:

if (elements[1].parentNode.children.length === ivm.classList().length) {