2011-09-01 16 views
0

我正在使用Sencha Touch + OpenLayers來開發一個演示應用程序。一個功能是獲取GeoServer中的功能數據目錄。我想使用Ext.List來顯示要素圖層的名稱。我想下面的代碼:Sencha Touch + OpenLayers:未能創建一個包含Openlayers.request.Get函數的列表

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

被建議我仍然是一個新手在這裏所有的ExtJS和現在的Sencha框架。但是,由於您的問題最終可能與我在OL和Sencha Touch上做的一些工作有關,因此決定查看它。不能真正發現任何錯誤,但我一直在尋找在煎茶觸摸文檔和itemtap被列爲:

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

那麼,你有沒有嘗試過的,而不是你寫的?

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

我可能是錯在這裏,但或許煎茶抱怨,因爲它認爲你在聲明尚未定義又一個新的數據視圖(?)。我認爲這就是錯誤所抱怨的。有興趣的話,如果這是問題。

+0

@Simon - 對不起,但我上面寫的不是答案。我使用OpenLayers Sencha Touch示例查看了mobile-sencha.js代碼,並且它們具有itemtap:拼寫方式相同。我猜你已經看過那個了?也許從WFS中分離圖層檢索可能會使事情變得更加複雜,並指出這是一個問題?希望你找到了答案。也許回覆,如果如此,我會對自己感興趣。 – teknocreator