通过API使用viewertoken时发生内存泄漏

时间:2018-08-29 13:55:00

标签: jquery .net typescript memory-leaks

我目前正在获得一个Viewertoken,它可以让我按下按钮并在屏幕上建立3D建筑物的幻灯片对话框,我可以查看模型并检查要显示建筑物中的哪些模型。 但是,我有一个大建筑物,大约需要0.8G的内存。每当我关闭幻灯片对话框。它保持不变,直到我再次单击该按钮并增加另一个0.8G。

我不太确定自己哪里出了问题,或者我错过了什么,所以我想在这里寻求一些解释。

 export class Viewer {
    private static $viewer: JQuery;
    public static View3D(type: string, id: string): void {
        var url = "";
        if (type == "Project") {
            url = "api/v1/show3d/ViewerToken/" + id;
        }
        else if (type == "Building") {
            url = "api/v1/show3d/ViewerToken/Building/" + id;
        }            
        $.ajax({
            url: Common.appPath + url,
            dataType: "JSON",
            method: "GET",
        }).done(function (data: Models.IViewerToken) {
            NTI.Common.Core.SlideDialog.show(
                {
                    hideOkButton: true,
                    dataUrl: "",
                    title: "View building",
                    icon: "nw-preview",                    
                }
            );
            var clientHeight = $(".n1d").height() - $(".n1d.navbar.navbar-default").height() - 4;
            Viewer.$viewer = $("<div style=\"height: " + clientHeight.toString() + "px;\">");
            $(".dialogContent").append(Viewer.$viewer).append(Viewer.buildModelSelector(data.Revisions));
            Viewer.$viewer.viewer('loadUrl', data.Url);
        });
    }

    private static buildModelSelector(models: Models.IViewerRevision[]): JQuery {
        var $ModelSelector = $("<ul class=\"toggleshow3dModels\">");
        $.each(models, (i, m) => {
            var $li = $("<li>");
            var $label = $("<label for=\"" + m.ModelId + "\">");
            $li.append($label);
            $label.append($("<input id=\"" + m.ModelId + "\" checked=\"checked\" type=\"checkbox\" name=\"model\" value=\"" + m.ModelId + "\">")).append($("<span>" + m.ModelName + "</span>"));
            $ModelSelector.append($li);
        });
        $ModelSelector.on("change", "input", (x: Event) => {
            var $input = <HTMLInputElement>event.target
            Viewer.$viewer.viewer($input.checked ? 'showModel' : 'hideModel', $input.value);
        });
        return $ModelSelector;
    }
}

    public static View3d() {                
            Viewer.View3D("Building", id);
    }

0 个答案:

没有答案