我在另一个dojo模块中从我的dojo模块调用方法时遇到问题。我的调用模块的代码是:
define([
"Templates/MarkTicket",
"DataTypes/MarkTicketForm_Data",
"DBCalls/MarkTicketDB",
...], function (MarkTicket, MarkTicketForm_Data, MarkTicketDB, ...
) {
return declare([_WidgetBase, _TemplatedMixin, _WidgetsInTemplateMixin], {
postCreate: function () {
//both modules have Test Method
MarkTicketDB.Test("call from MarkTicketForm");//works great
MarkTicket.Test("call from MarkTicketForm");//object doesnt support property or method test
},
...
});
});
在MarkTicketDB中对Test的调用工作得很好,但是当我尝试在MarkTicket中调用Test方法时,我得到了代码注释中显示的错误。我调试时,MarkTicket只显示Createsubclass和extend方法。我调用这些方法的模块也位于Templates目录中 - 这可能是问题吗? (我还尝试将模板/ MarkTicket定义为定义语句中的MarkTicket)模板包在我的主页中定义
有什么想法吗?
由于
正如我在评论中所说,我认为问题可能是我的调用模块(MarkTicketForm)是一个实例化并通过MarkTicket打开的dijit对话框,这里是代码:
MarkTicket:
...
postCreate: function () {
MT = new MarkTicketForm();//instaniate MarkTicketForm inside MarkTicket
}
...
//call a Method in MarkTicket Form to open the dialog
MT.showForm(TicketInfo);
...
MarkTicketForm(显示对话框的代码):
...
showForm: function (ticketInfo) {
ID = ticketInfo.ID;
var DateRcvd = this.formatDate(ticketInfo.DateRcvd);
this.lblID.innerHTML = ticketInfo.ID;
this.lblTicket.innerHTML = ticketInfo.Ticket;
this.lblRcvd.innerHTML = DateRcvd;
this.lblType.innerHTML = ticketInfo.TicketType;
this.myDialog.show();
},
...
答案 0 :(得分:0)
就像g00glen00b所说,你应该列出MarkTicket的代码。但是,既然你说过:
MarkTicket在我调试时只显示Createsubclass和extend方法。
...很明显MarkTicket是通过dojo.declare()创建的一个类。
推测Test()是MarkTicket实例上的一种方法,而不是MarkTicket类本身。因此,您可以这样做:
var m = new MarkTicket();
m.Test("call from MarkTicketForm");