Ext JS: перенос GeoExt в v4 ... «Попытка расширения из класса, который не был загружен на страницу» - PullRequest
0 голосов
/ 09 августа 2011

Я пытаюсь перенести приложение Ext 3.3.1 в Ext 4 (пока что со слоем compatabiltiy). Я столкнулся с некоторыми проблемами с GeoExt. В настоящее время он разрывается на строке 99, говоря: «Попытка расширения из класса, который не был загружен на странице». В строке 99 указан весь код, приведенный ниже.

Будем весьма благодарны за любые предложения или подсказки о том, как решить эту проблему. Спасибо.

    return selectControl;
},featureSelected:function(evt){
    if(!this._selecting){
        var store=this.grid.store;
        var row=store.findBy(function(record,id){
            return record.data.feature==evt.feature;
        });
        if(row!=-1&&!this.isSelected(row)){
            this._selecting=true;
            this.selectRow(row,!this.singleSelect);
            this._selecting=false;
            this.grid.getView().focusRow(row);
        }
    }
},
featureUnselected:function(evt){
    if(!this._selecting){
        var store=this.grid.store;
        var row=store.findBy(function(record,id){
            return record.data.feature==evt.feature;
        });
        if(row!=-1&&this.isSelected(row)){
            this._selecting=true;
            this.deselectRow(row);
            this._selecting=false;
            this.grid.getView().focusRow(row);
        }
    }
},
rowSelected:function(model,row,record){
    var feature=record.data.feature;
    if(!this._selecting&&feature){
        var layers=this.getLayers();
        for(var i=0,len=layers.length;i<len;i++){
           if(layers[i].selectedFeatures.indexOf(feature)==-1){
               this._selecting=true;
               this.selectControl.select(feature);
               this._selecting=false;
               break;
            }
        }
    }
},
rowDeselected:function(model,row,record){
    var feature=record.data.feature;
    if(!this._selecting&&feature){
        var layers=this.getLayers();
        for(var i=0,len=layers.length;i<len;i++){
            if(layers[i].selectedFeatures.indexOf(feature)!=-1){
                this._selecting=true;
                this.selectControl.unselect(feature);
                this._selecting=false;
                break;
            }
        }
    }
},
getLayers:function(){
    return this.selectControl.layers||[this.selectControl.layer];
}
};
GeoExt.grid.FeatureSelectionModel=Ext.extend(Ext.grid.RowSelectionModel,GeoExt.grid.FeatureSelectionModelMixin);
Ext.namespace("GeoExt","GeoExt.data");
GeoExt.data.LayerReader=function(meta,recordType){
    meta=meta||{};
    if(!(recordType instanceof Function)){
        recordType=GeoExt.data.LayerRecord.create(recordType||meta.fields||{});
    }

1 Ответ

1 голос
/ 09 августа 2011

Я нашел это.Устраняет ли это вашу проблему?

Ext.ux.form.AGrid = Ext.extend (Ext.grid.EditorGridPanel, {blabla: 'test'}) Попробуйте использовать новый Ext.define.Если вы используете динамическую загрузку, вам нужно использовать define с extend: 'someclass'.Таким образом, динамический загрузчик обязательно загрузит класс, который вы расширяете первым.

В качестве альтернативы вы можете просто использовать ext-all.js и сделать это по-старому.

http://www.sencha.com/forum/archive/index.php/t-125402.html?s=cdae2bc4c55d9b9436b67d7a799addee

...