2017-01-23 1 views
0

Примечание: - Я хочу вызвать функцию ClassA «deleteEntryInternal» в другом классе B в функции «afterRequest». Как я могу вызвать эту функцию в другой функции класса.как вызвать функцию из класса A в функции класса B в extjs4

Мой код Ниже // вот мой класс А

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

Вы не можете вызвать функцию класса, если только эта функция не является статической. Вы можете вызвать функцию только в экземпляре класса. Для этого вам понадобится экземпляр ('var instanceA = Ext.create ('A'); instanceA.deleteEntryInternal()') – Alexander

+0

Спасибо за ответ .. !!! – Hemant

+0

Как насчет [mixins] (http://docs.sencha.com/extjs/4.2.6/#!/api/Ext.Class-cfg-mixins)? – scebotari66

ответ

2

для вызова этого метода, вам необходимо получить экземпляр этого класса. И тогда вы можете вызывать методы этого класса.

1.You может получить экземпляр Ext.app.Controller по

var controllerInstance = appName.app.getController('appName.controller.controllerName'); 
controllerInstance.methodToCall(); 

где APPNAME это имя вашего ExtJS App.

2.Если ваш класс представляет собой вид, который уже вынесено, вы можете получить свой экземпляр, -

var viewInstance = Ext.getCmp(viewId); 
viewInstance.methodToCall(); 

где viewId это идентификатор вашего зрения.

3. Статический класс - Вы можете вызывать методы статического класса непосредственно, как если класс MyStaticClass статический класс, вы можете вызывать его методы, как -

MyStaticClass.methodToCall(); 
-1

Это никогда не является хорошей идеей, чтобы пересечь методы ссылочного класса. Хотя методы Харшала будут работать, это очень плохой дизайн приложения. Если ваш класс должен реагировать на событие, что происходит в другом классе, то почему бы вам просто не запустить событие в классе A и настроить слушателя в классе B?

+0

Но я должен следовать этому дизайну. так что вы можете дать мне хоть какую-то идею? – Hemant

+0

Какой класс запускает это событие? То есть каково определение класса, содержащего функцию afterRequest? Это контроллер, другой взгляд? –

+0

Да, я согласен. В идеале вам не нужны эти вызовы методов. – Harshal

Смежные вопросы