Исходя из того, что вы только что показали, теперь я могу смело дать ответ, объясняющий, что не так.
Когда вы делаете dojo.hitch()
, вы не должны вызывать функцию внутри него, а вместо этого вызывать результат функции.То есть вам нужно предоставить dojo.hitch
ссылку на функцию, которую нужно подключить, а не результат вызова этой функции.
В вашем примере вы вызываете tester()
(которая вызывает функцию tester
) внутри dojo.hitch()
, который вызывает tester
один раз.Даже если у вас есть dojo.hitch()();
, потому что tester()
не возвращает обработчик функции (но результат tester
, в данном случае undefined
), hitch()();
ничего не делает.Это может сбить с толку, поэтому я покажу вам пример.
Не делайте этого:
dojo.hitch (context, handler ()) ();
Вместо этого сделайте следующее:
dojo.hitch (context, handler) ();
Поэтому, чтобы сделать то, что у вас очень читабельно, вы бысделайте это:
widget = dijit.byId("widgetName");
tester = function() {
console.log(this);
}
handle = dojo.hitch(widget, tester);
handle();
Ваша ошибка - попытка вызова функции из dojo.hitch()
.Эта ошибка также не присутствовала в вашем первоначальном вопросе.