2013-01-15 33 views
0

我一直在撓我的頭,我想知道這是否可能。我想更換GeoExt.form.FormPanel的協議通過以下方式:如何替換協議geoext.form.formpanel

  1. 呈現FormPanel中,我定義的變量「原」爲空的FormPanel中(VAR原=空)的外部。
  2. 然後「proto」進入formpanel(protocol:proto)。
  3. 在按鈕的處理函數中定義了一個新變量「proto」。我想在formpanel中替換這個新的變量。

既然extjs,geoext,openlayers都是javascript庫,我已經嘗試了諸如「eval」之類的東西,以便可以在formpanel中訪問處理程序中的變量「proto」,但目前還沒有運氣。這裏是一個簡單的例子來說明這一點:

var proto = null; 

var formPanel = new GeoExt.form.FormPanel({ 
    protocol: proto,    # <--- replace with [1] 
    items: [{ 
     xtype: "combo", 
     id: "idcombo", 
     etc... 
    }, { 
     xtype: "textfield", 
     id: "idtext", 
     etc... 
    }], 
    button:[{ 
     text: "search", 
     handler: function() { 
      formPanel.search(); 
      var combo = Ext.getCmp('idcombo').getValue();  # <--- this works and gets the value chosen in "xtype: combo" 
      var proto: new OpenLayers.Protocol.HTTP({   # <--- [1] (ie. new variable "proto") 
       url: "http://www.pub.pub/" + combo + "/somestuff/", # <--- this works 
       format: etc... 
      }) 
     } 
    }] 
}) 

我怎麼能這樣做?我會感謝您的支持,提前致謝。

此致

格里

回答

0

的解決方案是僅使用 「protocol.options.url = NEWURL;」而不是protocol.destroy();或protocol.read();一個完整的解釋是here