/ / як замінити протокол в geoext.form.formpanel - openlayers, javascript, extjs3

як замінити протокол у geoext.form.formpanel - openlayers, javascript, extjs3

Я чухав голову над цим, і мені цікаво, чи це можливо. Я хочу замінити протокол GeoExt.form.FormPanel наступним чином:

  1. щоб відобразити formpanel, я визначив змінну "proto" як null поза formpanel (var proto = null).
  2. тоді "proto" переходить всередину форм-панелі (protokol: proto).
  3. у функції обробника кнопки визначена нова змінна "прото". Я хочу замінити цю нову змінну всередині панелі форм.

Оскільки extjs, geoext, openlayers - це JavaScriptбібліотеки, я спробував такі речі, як "eval", щоб зробити змінну "proto" всередині обробника доступною у форміpanel, але поки що не пощастило. Ось це спрощений приклад, щоб показати це:

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 для відповіді № 1

Рішення полягало в тому, щоб використовувати лише "Protocol.options.url = newUrl;" замість Protocol.destroy (); або Protocol.read () ;, повне пояснення є тут