Sencha Touch + OpenLayers:未能创建包含 Openlayers.request.Get 函数的列表

Posted

技术标签:

【中文标题】Sencha Touch + OpenLayers:未能创建包含 Openlayers.request.Get 函数的列表【英文标题】:Sencha Touch + OpenLayers: failed to create a list that wraps a Openlayers.request.Get function 【发布时间】:2011-09-01 01:42:49 【问题描述】:

我正在使用 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.createStore()”后将它们传递给this.store,我将得到一个空列表。但是,我跟踪了数组data,结果发现它有数据,但存储是空的。

我找不到它有什么问题。任何人都可以帮我给我一些提示吗?

感谢所有帮助!!!

【问题讨论】:

【参考方案1】:

请注意,我仍然是所有 ExtJS 和现在的 Sencha 框架的新手。但是,由于您的问题最终可能与我正在使用 OL 和 Sencha Touch 进​​行的一些工作有关,因此决定查看它。真的找不到任何问题,但我正在查看 Sencha Touch 文档,并且 itemtap 被列为:

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

那么,你有没有试过这个而不是你写的?

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

我在这里可能是错的,但也许 Sencha 是在抱怨,因为它认为您正在声明一个尚未定义的新数据视图(?)。我认为这就是错误所抱怨的。如果这是问题,请感兴趣。

【讨论】:

@Simon - 抱歉,我上面写的不是答案。我使用 OpenLayers Sencha Touch 示例查看了 mobile-sencha.js 代码,它们的 itemtap: 拼写方式相同。我想你已经看过了?也许将图层检索与 WFS 分开可能会使事情变得不那么复杂并指出问题所在?希望您已经找到了答案。如果是这样的话,也许会回复我自己。

以上是关于Sencha Touch + OpenLayers:未能创建包含 Openlayers.request.Get 函数的列表的主要内容,如果未能解决你的问题,请参考以下文章

Sencha Touch实战OA系统开发|Sencha Touch项目教程

Sencha Touch - sencha touch js 大小的性能问题

将 Sencha Architect 项目从 Sencha Touch v2.0.x 更新到 Sencha Touch 2.1.x

iPhone Sencha Touch - 如何在 sencha touch 中将表格视图添加到拆分视图

将 Sencha Touch 1.X 升级到 Sencha Touch 2.X

有没有办法将 Sencha Touch 转换为 Sencha EXTJ(或将 EXTJ 转换为 Touch)?