我有一个基于 _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/