注意: - 我想在“afterRequest函数”中的另一个类B中调用ClassA函数“deleteEntryInternal”。如何在其他类函数中调用此函数。
我的代码在下面 //这是我的A级
Ext.define('WebCare.UI.OtherServicesEditor', {
extend: 'Ext.WebCare.UI.BaseEditor',
_otherservicesGrid: null,
alias: 'widget.otherserviceseditor',
title: 'Other Services',
defaultType: 'textfield',
id: 'otherservicesEditor',
deleteEntryInternal: function (isDelete) {
this.disableForm();
var self = this;
var selection = self._otherservicesGrid.getSelectionModel().getSelection();
if (selection.length > 0) {
if (isDelete) {
selection[0].data.IsDelete = true;
}
this.deleteServerRecord(selection[0].data, function () { });
vent.trigger(otherServicesStore.storeId, selection[0].data);
}
}
答案 0 :(得分:2)
要调用此方法,您需要获取此类的实例。然后你可以调用该类中的方法。
1.您可以通过
获取Ext.app.Controller的实例var controllerInstance = appName.app.getController('appName.controller.controllerName');
controllerInstance.methodToCall();
其中 appName 是您的Extjs应用的名称。
2.如果您的班级是已经渲染的视图,您可以通过以下方式获取其实例
var viewInstance = Ext.getCmp(viewId);
viewInstance.methodToCall();
其中 viewId 是您视图的ID。
第3。静态类 - 您可以直接调用静态类的方法,就像类MyStaticClass是静态类一样,您可以调用它的方法,如 -
MyStaticClass.methodToCall();
答案 1 :(得分:-1)
以任何方式跨引用类方法绝不是一个好主意。虽然Harshal的方法会起作用,但它只是非常糟糕的应用程序设计。如果你的类需要对另一个类中发生的事件作出反应那你为什么不在A类中激活一个事件并在B类中设置一个监听器呢?