【问题标题】:knockoutjs: afterrender causing massive slowdownknockoutjs:后渲染导致大幅减速
【发布时间】:2014-03-30 02:25:10
【问题描述】:

我在一个 knockoutjs foreach 的 afterrender 上触发了一些代码。它运行的对象很大(>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() 语句有问题,但我找不到任何方法来加快速度。

【问题讨论】:

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


    【解决方案1】:

    假设ivm.classList 是一个可观察的数组,调用ko.toJS 是相当昂贵的,因为它会对你的视图模型进行深度复制和展开。如果您只需要可观察数组的长度,那么它很容易访问:

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

    【讨论】:

    • 赢家!我知道我遗漏了一些明显的东西。谢谢!
    猜你喜欢
    • 2018-09-23
    • 2016-05-20
    • 1970-01-01
    • 2018-07-07
    • 1970-01-01
    • 1970-01-01
    • 2014-04-20
    • 2016-06-04
    • 1970-01-01
    相关资源
    最近更新 更多