0

私はこれに頭を悩ませてきましたが、これが可能かどうか疑問に思っています。GeoExt.form.FormPanelのプロトコルを次のように置き換えたいと思います。

  1. フォームパネルをレンダリングするために、フォームパネルの外側で変数「proto」をnullとして定義しました(var proto = null)。
  2. 次に、「proto」がフォームパネル内に入ります(プロトコル:proto)。
  3. ボタンのハンドラー関数で、新しい変数「proto」が定義されています。フォームパネル内でこの新しい変数を置き換えたいと思います。

extjs、geoext、openlayersはjavascriptライブラリであるため、フォームパネルでハンドラー内の変数「proto」にアクセスできるようにするために「eval」などを試しましたが、今のところうまくいきません。これを示す簡単な例を次に示します。

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...
            })
        }
    }]
})

どうすればこれを行うことができますか?よろしくお願いします。

よろしくお願いします、

ゲリー

4

1 に答える 1

0

解決策は、「protocol.options.url=newUrl;」のみを使用することでした。protocol.destroy();の代わりに またはprotocol.read();、完全な説明はここにあります

于 2013-02-14T16:22:34.350 に答える