既存のdijit.form.Buttonを拡張して、「topic」プロパティを受け入れ、そのコマンド/トピックonClickを公開しようとしています。私が思いついた解決策には、以前のButton.prototype_onClickメソッドへの参照が必要です。以下の使用例が引き続き機能するように、これをコーディングするためのより良い方法はありますか?
define(["dojo/_base/lang", "dijit/form/Button"], function(lang, Button) {
var oldClick = Button.prototype._onClick;
lang.extend(Button, {
topic: null,
_onClick: function(e) {
alert('test');
if (this.topic) {
connect.publish(this.topic);
}
return oldClick.apply(this, arguments);
}
});
});
利用方法:
<button dojo-data-type="dijit.form.Button" data-dojo-props="topic: 'test'">Test</button>
require(["dojo/_base/connect"], function(connect) {
connect.subscribe("test", function() {
alert("you just clicked the test button");
});
});