我是dojo的初学者,我试图将我的一些接口代码移到一个类中,只是为了让方法不在我的主文件中。
我的问题 - 我无法将内部类函数用作其他函数的一部分。
在我创建外部文件中的接口对象后,如图所示,我能够成功:
appInterface = new (interface)
appInterface.showGraphWindow()
appInterface.hideGraphWindow()
但是我无法弄清楚如何在toggleGraphWindow函数中使用这些函数。 (由于背景?)
如果我试图打电话:
on(registry.byId("graphBtn"),"click", appInterface.toggleGraphWindow);
它在线上崩溃了:
this.showGraphWindow()
或
this.hideGraphWindow()
使用:“未定义不是函数”
如何编码toggleGraphWindow函数?
Iterface.js
define([
"dojo/_base/declare",
"dojo/on",
"dijit/registry"
],
function(
declare,
on,
registry
){
return declare (null, {
hideGraphWindow : function () {
dijit.byId("graphWindowMain").domNode.style.display = 'none';
dijit.byId("applicationWindow").resize();
},
showGraphWindow : function () {
dijit.byId("graphWindowMain").domNode.style.display = 'block';
dijit.byId("applicationWindow").resize();
},
toggleGraphWindow : function (){
if (dijit.byId("graphBtn").checked == true)
{this.showGraphWindow()}
else
{this.hideGraphWindow()}
}
});
});
答案 0 :(得分:0)
有什么问题
toggleGraphWindow : function (){
if (dijit.byId("graphBtn").checked == true) {
this.showGraphWindow();
}
else {
this.hideGraphWindow();
}
}
答案 1 :(得分:0)
多谢你们两个,你们确实是对的Ken,我多次读过这篇类似的帖子,并且不知道怎么理解答案:
Calling object methods internally in dojo
在阅读了你发布的内容之后,我已经以某种方式理解了上面链接的答案,现在明白我的问题是什么!谢谢大家。
我通过在主应用程序中更改我的代码来修复它,如下所示:
var appInterface = new Interface();
on(registry.byId("graphBtn"),"click", appInterface.toggleGraphWindow);
更改为:
var appInterface = new Interface();
var graphToggle = dojo.hitch(appInterface, "toggleGraphWindow");
on(registry.byId("graphBtn"),"click", graphToggle);
我认为错误的原因是"这个"对象在运行时,实际上是" graphBtn"而不是appInterface。