Sencha Touch + OpenLayers: не удалось создать список, включающий функцию Openlayers.request.Get - PullRequest
0 голосов
/ 01 сентября 2011

Я использую Sencha Touch + OpenLayers для разработки демонстрационного приложения.Одной из функций является получение каталога данных объектов в GeoServer.Я хочу использовать Ext.List для отображения имени векторных слоев.Я пробовал следующие коды:

App.AddFeatureLayerList = Ext.extend(Ext.List, {    
createStore: function(){
    Ext.regModel('WFSLayers', {
        fields: ['name', 'title', 'srs', 'featureNS']
    });
    var data = [];
    var request = OpenLayers.Request.GET({
        url: root+'/geoserver/ows?service=wfs&version=1.0.0&request=GetCapabilities',
        handler: function(response){
            var XMLformat = new OpenLayers.Format.XML();
            var xml = XMLformat.read(response.responseText);
            var CAPformat = new OpenLayers.Format.WFSCapabilities();
            cap = CAPformat.read(xml);

            for (var i = 0; i < cap.featureTypeList.featureTypes.length; i++) {
                var featureT = cap.featureTypeList.featureTypes[i];
                data.push({
                    name: featureT.name,
                    title: featureT.title,
                    srs: featureT.srs,
                    featureNS: featureT.featureNS
                });
            }
            return new Ext.data.Store({
                model: 'WFSLayers',
                sorters: 'title',
                data: data,
                getGroupString: function(record){
                    return record.get('title')[0];
                },
            });
        }
    });
},
initComponent: function(){
    this.store = this.createStore();
    this.itemTpl = new Ext.XTemplate('<span class="gx-layer-item">{name}</span>');
    this.grouped = true;
    this.listeners = {
        itemtap: function(dataview, index, item, e){


        }
    };
    App.AddFeatureLayerList.superclass.initComponent.call(this);
}
});
Ext.reg('app_addFeatureLayerList', App.AddFeatureLayerList);

Однако я получил ошибку:

Uncaught DataView requires tpl, store and itemSelector configurations to be defined.

, тогда, если я удалю коды:

new Ext.data.Store({
            model: 'WFSLayers',
            sorters: 'title',
            data: data,
            getGroupString: function(record){
                return record.get('title')[0];
            },
        });

и поместу их вперейдите к this.store после вызова "this.createStore()", я получу пустой список.однако я отследил массив data и оказалось, что в нем есть данные, но хранилище пусто.

Я не могу найти, что с ним не так.Кто-нибудь может помочь мне дать мне несколько советов?

Ценю всю помощь !!!

1 Ответ

1 голос
/ 04 декабря 2011

Имейте в виду, что я все еще новичок со всеми ExtJS, а теперь и с фреймворком Sencha. Однако, поскольку ваш вопрос может быть связан с какой-то работой, которую я делаю с OL и Sencha Touch, решил посмотреть на нее. Не могу найти что-то не так, но я искал в документах Sencha Touch, и эта запись отображается как:

itemtap( Ext.DataView this, Number index, Ext.Element item, Ext.EventObject e )

Итак, вы пробовали это вместо того, что написали?

itemtap: function( this, index, item, e ) 

Я могу ошибаться, но, возможно, Сенча жалуется, потому что думает, что вы объявляете новый вид данных, который еще не определен (?). Я думаю, что это то, на что жалуется ошибка. Интересно, если это было проблемой.

...