2012-11-09 83 views
0

我對使用Sencha Touch很新穎。我正在創建一個具有側邊欄和地圖窗格的應用程序,當用戶單擊邊欄區域中的「顯示地圖」按鈕時,地圖應該集中在該位置。在我遇到問題時,我不確定如何訪問處理函數中tpl變量中的{lat}和{lon}屬性。我很抱歉,如果這是一個微不足道的問題,但它讓我難住。Sencha觸摸變量訪問問題

Ext.define('Admin.view.Details', 
{ 
extend: 'Ext.Panel', 
xtype: 'details', 

config: 
{ 
    styleHtmlContent: true, 
    scrollable: 'vertical', 
    title: 'Individual', 
    tpl: 
    [ 
     'Account Number: {comid}', 
     '<br />', 
     'Address: ', 
     '{address} <br />', 
     '{lat},{lon}', 
    ], 

    items: 
    [ 
     { 
      title: 'Utilities', 
      items: 
      [ 
       { 
        xtype: 'selectfield', 
        label: 'Utility Type', 
        options: 
        [ 
         {text: 'Electricity', value: 'U1'}, 
         {text: 'Water', value: 'U2'}, 
         {text: 'Gas', value: 'u3' }, 
        ], 

        id: 'utilityType', 
       }, 
       { 
        xtype: 'selectfield', 
        label: 'Coverage Area', 
        options: 
        [ 
         {text: 'Subdivision', value: 'a1'}, 
         {text: 'Zipcode', value: 'a2'}, 
         {text: 'County', value: 'a3' }, 
        ], 

        id: 'areaType', 
       }, 
       { 
        xtype: 'button', 
        text: 'Show Map', 
        ui: 'round', 
        padding:3, 
        margin:10, 
        id: 'mapsBTN', 
        handler: function() { 

         olMap.setCenter(new OpenLayers.LonLat(lon, lat).transform 
         (
          new OpenLayers.Projection("EPSG:4326"), 
          olMap.getProjectionObject() 
         ), 16); 

        } 
       }, 
      ] 
     }, 
    ] 
} 
}); 
+0

你使用的是MVC模式嗎?如果是這樣,那麼你爲什麼使用處理程序?您可以在視圖的控制器中添加對按鈕的引用,並在那裏收聽itemtap事件。 –

回答

0

您可以通過getter獲取配置對象中的任何變量。

this.getTpl(); //returns tpl variable 

還要注意的是this必須指出您Admin.view.Details視圖。

+0

換句話說,你需要添加範圍:這是你的按鈕的配置,否則這將指向按鈕而不是視圖。 –

+0

我添加了:'範圍:this'並試圖記錄getTpl的結果我收到了下面的異常:'Uncaught TypeError:Object [object Window] has no method'getTpl'' –

1

您需要通過添加到您的視圖和引用您的按鈕實現您的視圖的控制器去處理,然後添加一個偵聽器itemtap事件的按鈕或視圖的構造方法實現:

Ext.define('Admin.view.Details',{ 
    extend: 'Ext.Panel', 
    xtype: 'details', 

    config:{ 
    ... 
    }, 

    constructor: function() { 
    this.callParent(arguments); 

    var me = this; 

    this.child('#mapsBTN').setHandler(function() { 
     me.getTpl(); // Here's your tpl config object 
    }); 
    } 
}); 

希望這對你有幫助