如何在geoext.form.formpanel中替换协议

时间:2013-01-15 10:40:02

标签: openlayers javascript extjs3

我一直在摸不着头脑,我想知道这是否可行。我想以下列方式替换GeoExt.form.FormPanel的协议:

  1. 为了呈现formpanel,我在formpanel(var proto = null)之外将变量“proto”定义为null。
  2. 然后“proto”进入formpanel(protocol:proto)。
  3. 在按钮的处理函数中定义了一个新变量“proto”。我想在formpanel中替换这个新变量。
  4. 由于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...
                })
            }
        }]
    })
    

    我怎么能这样做?我将非常感谢您的支持,并提前感谢。

    致以最诚挚的问候,

    格里

1 个答案:

答案 0 :(得分:0)

解决方案是仅使用“protocol.options.url = newUrl;”而不是protocol.destroy();或protocol.read();,完整的解释是here