2013-01-15 30 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