Я обнаружил, что вы не можете связывать цепочку с последовательным поведением. В приведенном ниже коде вызывается метод onCustomClick в виджете, но связанная с ним функция не вызывается. Обходной путь, который у меня есть, - это то, что я сделал с onCustomClick2, где я присоединяю событие к внутреннему методу, который просто вызывает другой метод. Есть ли способ написать этот код, не имея внутреннего метода?Chaining 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, но ваше объяснение было правильным. Благодарю. –