Drag&Drop + ООП
Пишу ряд классов для управления формами для создания отчетов. Например
//Класс отчетник-контейнер Esdv.Reporter = Ext.extend(Ext.TabPanel, { height: 300 ,initComponent:function() { Ext.apply(this, { activeTab: 0 ,defaults:{autoScroll: true} ,items:[ ... ] }); Esdv.Reporter.superclass.initComponent.apply(this, arguments); } }); Ext.reg('esdvreportcontainer', Esdv.Reporter); Дальше хочу сделать формы наследники от панелей, в следующем куске кода работает закомментированный кусок, но хочется в строке notifyDrop: .... указать метод notifyDrop_GridSelectedObjects как сейчас и сделано, однако в текущем состоянии появляется ошибка в методе notifyDrop_GridSelectedObject, поле this.GridSelectedObjects - undefined , а вообще в методе afterrender_GridSelectedObjects ошибки в строке var grid = this.GridSelectedObjects; не возникает Почему такое происходит не понимаю. Помогите, пожалуйста. //Класс ReportConsumption для создания заказа отчета Esdv.ReportConsumption = Ext.extend(Ext.Panel, { GridSelectedObjects: {} , buildObjectTree: function () { return new Ext.tree.TreePanel({ title: 'Дерево объектов', height: 300, loader: TreeLoader, animate: true, containerScroll: true, autoScroll: true, root: new Ext.tree.AsyncTreeNode({ id: 'null', text: 'root', nodeType: 'async' }), rootVisible: false, fitToFrame: true, border: true, enableDD: true, ddGroup: 'grid2tree', defaults: { collapsible: true, split: true, bodyStyle: 'padding:15px' } }); } , biuldGridSelectedObjects: function () { var that = this; var grid = new Ext.grid.GridPanel({ ... }); return grid; } , afterrender_GridSelectedObjects: function (sender) { var gridTargetEl = this.GridSelectedObjects.getView().scroller.dom; var that = this; var grid = this.GridSelectedObjects; var GridDropTarget = new Ext.dd.DropTarget(gridTargetEl, { ddGroup: 'grid2tree', /*notifyDrop: function (ddSource, e, data) { e.cancel = false; var node = ddSource.dragData.node; var r = []; r = populate(node); that.GridSelectedObjects.store.add(r); return true; }*/ notifyDrop: that.notifyDrop_GridSelectedObjects }); } , notifyDrop_GridSelectedObjects: function (ddSource, e, data) { e.cancel = false; var node = ddSource.dragData.node; var r = []; r = populate(node); this.GridSelectedObjects.store.add(r); return true; } ... , buildItems: function () { this.GridSelectedObjects = this.biuldGridSelectedObjects(); ... |
Часовой пояс GMT +3, время: 16:14. |