如何使用gantt.destructor()?
How to use gantt.destructor()?
我在 Vue 中使用 DHTMLX GANTT。
创建甘特图后,我切换到另一页并 return,并非所有功能都可用。
在 dhtmlx 论坛中,他们给了一个 link 给:https://docs.dhtmlx.com/gantt/desktop__multiple_gantts.html
但是如果我尝试在我的应用程序中执行相同的操作,方法 const ganttChart = Gantt.getGanttInstance();
未定义。
有没有办法在vue中完全销毁一个组件?我尝试使用 v-if
、:key
、$forceUpdate()
但没有成功。 DOM 中仍有一些甘特图组件。当我刷新页面时,它起作用了。
有没有其他方法可以销毁他从头开始渲染的组件?
Gantt
对象仅存在于试用版、企业版和旗舰版中。
要销毁甘特图实例,可以调用gantt.destructor
方法:
https://docs.dhtmlx.com/gantt/api__gantt_destructor.html
它适用于所有甘特图版本。该方法应该会破坏甘特图容器,但它的调整大小观察器仍然存在:
甘特图销毁后,您将无法再次使用它,直到您重新加载页面或创建新的甘特图实例。
gantt.destructor 函数在 Vue 中也给我带来了一些问题。
我解决了它更改甘特图参考并分离在初始化期间附加的事件,例如 beforeDestroy Vue 生命周期,如下所示:
<div class="gantt" :id="ganttId"></div>
mounted () {
this.ganttId = 'gantt-' + this.createUUID()
this.initializeGannt()
}
beforeDestroy() {
gantt.detachEvent("onTaskClick");
gantt.detachEvent("onAfterTaskUpdate");
}
methods {
initializeGannt () {
...
gantt.attachEvent("onTaskClick", (id, e) => {
...
}, {id: "onTaskClick"});
gantt.attachEvent("onAfterTaskUpdate", (id, e) => {
...
}, {id: "onAfterTaskUpdate"});
...
}
}
我在 Vue 中使用 DHTMLX GANTT。
创建甘特图后,我切换到另一页并 return,并非所有功能都可用。
在 dhtmlx 论坛中,他们给了一个 link 给:https://docs.dhtmlx.com/gantt/desktop__multiple_gantts.html
但是如果我尝试在我的应用程序中执行相同的操作,方法 const ganttChart = Gantt.getGanttInstance();
未定义。
有没有办法在vue中完全销毁一个组件?我尝试使用 v-if
、:key
、$forceUpdate()
但没有成功。 DOM 中仍有一些甘特图组件。当我刷新页面时,它起作用了。
有没有其他方法可以销毁他从头开始渲染的组件?
Gantt
对象仅存在于试用版、企业版和旗舰版中。
要销毁甘特图实例,可以调用gantt.destructor
方法:
https://docs.dhtmlx.com/gantt/api__gantt_destructor.html
它适用于所有甘特图版本。该方法应该会破坏甘特图容器,但它的调整大小观察器仍然存在:
甘特图销毁后,您将无法再次使用它,直到您重新加载页面或创建新的甘特图实例。
gantt.destructor 函数在 Vue 中也给我带来了一些问题。
我解决了它更改甘特图参考并分离在初始化期间附加的事件,例如 beforeDestroy Vue 生命周期,如下所示:
<div class="gantt" :id="ganttId"></div>
mounted () {
this.ganttId = 'gantt-' + this.createUUID()
this.initializeGannt()
}
beforeDestroy() {
gantt.detachEvent("onTaskClick");
gantt.detachEvent("onAfterTaskUpdate");
}
methods {
initializeGannt () {
...
gantt.attachEvent("onTaskClick", (id, e) => {
...
}, {id: "onTaskClick"});
gantt.attachEvent("onAfterTaskUpdate", (id, e) => {
...
}, {id: "onAfterTaskUpdate"});
...
}
}