私は、一貫性のある動作でチェーン接続できないことが分かりました。下のコードでは、ウィジェットのonCustomClickメソッドが呼び出されていますが、接続されている関数は呼び出されません。私が持っている回避策は、onCustomClick2を使って何をしたかです。ここでは、単に他のメソッドを呼び出す内部メソッドにイベントをアタッチします。内部メソッドを持たなくてもこのコードを書く方法はありますか?古い(とあなたが結合しているメソッド)を呼び出し、新しい機能を持つメソッドを再定義することで動作dojo.connectチェインdojo.connect
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Dojo Connect Issue</title>
</head>
<body>
<div id="content"></div>
<script src="http://ajax.googleapis.com/ajax/libs/dojo/1.7/dojo/dojo.js" data-dojo-config="isDebug: true"></script>
<script type="text/javascript">
require(["dojo/domReady!", "dojo/parser", "dijit/_Widget", "dijit/_Templated"], function(dr, p, w, t) {
dojo.declare("W1", [w, t], {
templateString: '<div>Click Me</div>',
postCreate: function() {
this.inherited(arguments);
this.connect(this.domNode, 'onclick', this.onCustomClick);
this.connect(this.domNode, 'onclick', this._onCustomClick2);
},
onCustomClick: function() {
console.debug('onCustomClick');
},
_onCustomClick2: function() {
this.onCustomClick2();
},
onCustomClick2: function() {
console.debug('onCustomClick2');
},
});
var w = new W1({}, dojo.byId('content'));
dojo.connect(w, 'onCustomClick', function() {
console.debug('End Consumer - onCustomClick'); // never gets called???
});
dojo.connect(w, 'onCustomClick2', function() {
console.debug('End Consumer - onCustomClick2');
});
w.startup();
});
</script>
</body>
</html>
this.connect(this.domNode、 'onclick'、 'onCustomClick');正しい構文です。これはdojo.connectを実行していた場合に必要でしたが、あなたの説明は正しいものでした。ありがとう。 –