javascript——方法addDiagramListener和removeDiagramListener在gojs中永远不会被调用
发布时间:2022-02-21 13:35:01 524
相关标签:
希望你们都做得很好!!我在调用Diagram事件时遇到了一些问题。在这里,我发布了一些对我来说不起作用的用例,以及哪些有用。
案例I)不起作用:为同一个函数引用依次调用addDiagramListener和removeDiagramListener“;“设置布局”;没用。addDiagramListener或removeDiagramListener均未被解雇。
export class DiagramListenerTestClass {
execute(context: any): any {
let diagram = context.diagram;
diagram.layout = new go.ForceDirectedLayout;
diagram.addDiagramListener("LayoutCompleted", setLayout);
diagram.removeDiagramListener("LayoutCompleted", setLayout);
}
}
// Define outside the class
var setLayout = function (event) {
event.diagram.layout = new go.Layout();
console.log("Method called!!");
}
案例II)有效:在设置超时后调用removeDiagramListener,同时启动addDiagramListener和removeDiagramListener。
export class DiagramListenerTestClass {
execute(context: any): any {
let diagram = context.diagram;
diagram.layout = new go.ForceDirectedLayout;
diagram.addDiagramListener("LayoutCompleted", setLayout);
setTimeout(() => { diagram.removeDiagramListener("LayoutCompleted", setLayout) }, 100);
}
}
// Define outside the class
var setLayout = function (event) {
event.diagram.layout = new go.Layout();
console.log("Method called!!");
}
注:我不确定案例二有效而案例一无效的原因。我认为成功执行案例二的原因是:;对addDiagramListener和removeDiagramListener的调用非常快,以至于在调用addDiagramListener“setLayout”函数之前,侦听器会被“removeDiagramListener”删除;。为了让函数成功执行,我调用了'removeDiagramListener',设置超时时间为100ms。
如果有什么不对劲,请务必让我纠正。您的建议将非常有用,我们将不胜感激!
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报