javascript - dojo 小部件在被销毁时会发出事件吗?或者您可以强制它发出事件吗?

标签 javascript dojo

我有一个基于 _WidgetBase 的自定义小部件。我用 JavaScript 创建它,想知道它何时被销毁。

父级代码:

var editRelatedTableWidget = new EditRelatedTable().placeAt(dom.byId("docEditorWidget");
editRelatedTableWidget.startup();
on(editRelatedTableWidget, "click", function () {console.log("DIJIT CLICKED"); }); // works
on(editRelatedTableWidget, "destroy", function () { console.log("DIJIT DESTROYED"); }); // does not ever happen

我尝试过附加卸载、销毁和删除 - 这些事件都没有被触发。当单击按钮时,小部件实际上会自行销毁,因此我尝试强制它发出一个事件,如下所示(在小部件中):

on.emit(this,"destroy");
this.destroyRecursive();

但是父级也没有检测到事件。有什么建议么?

最佳答案

dojo/aspect.after对于这样的情况,你想在调用某个方法时执行某些操作,但没有事件可监听,这是一个很好的解决方案。

示例:

aspect.after(editRelatedTableWidget, 'destroy', function () {
    console.log(this.id + ' destroyed');
}, true);

回调后的true参数是receiveArguments标志,它告诉aspect.after将原始参数按原样发送到回调,更重要的是,忽略它的返回值,保留原始函数的返回值。如果此标志为 false,则回调将传递原始返回值和参数数组,并且必须显式返回函数现在应返回的值。

关于javascript - dojo 小部件在被销毁时会发出事件吗?或者您可以强制它发出事件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29931695/

相关文章:

javascript - 选择值后的下拉列表创建新字段

javascript - 如何安装 moment.js 包并在 Ionic 应用程序中使用它?

Javascript 将函数作为对象传递会影响范围

javascript - 漏洞 : Google Drive Picker stopped loading today

javascript - 路由时 Angular JS 路由参数约束

CDN 上的 Dojo 与自己安装

javascript - Dojo 内存存储定期刷新

javascript - scrollIntoView() 阻止其他监听器触发

javascript - 防止按钮最大输入jquery

jquery - Dojo 相当于 jQuery $ ('html' )