#javascript #extjs
#javascript #extjs
Вопрос:
Может кто-нибудь сказать мне, как передать данные из контроллера в хранилище данных в sencha touch.
просмотр кода
var select = new Ext.form.Select({
id:'selectCity',
store: parking.stores.city,
displayField: 'Name',
valueField: 'Name',
placeHolder: 'Choose City',
cls:'select'
});
var citySearchButton = new Ext.Button({
cls: 'citySearch',
text: 'Search',
handler: function () {
Ext.dispatch({
controller: parking.controllers.controller,
action: 'showMapBasedOnCity',
id: Ext.getCmp('selectCity').getValue()
});
}
});
с моей точки зрения, я могу передать значение контроллеру.
showMapBasedOnCity: function (options) {
var city = options.id;
//var data = parking.stores.parkingFacilityByCity.setId(city);
// parking.views.map.addMap(city);
parking.views.viewport.setActiveItem(
parking.views.map, options.animation
);
},
Проблема в том, как передать значение отсюда в хранилище данных: мне нужен параметр из контроллера (значение города) для передачи в мой запрос jsonp, чтобы получить желаемый результат обратно).
parking.stores.parkingFacilityByCity = new Ext.data.Store({
model: 'PF',
proxy: Ext.util.JSONP.request({
url: 'http://parking.511.org/index/M_GetParkingFacilityByCity',
callbackKey: 'callback',
parmas: { city: },
scope: this,
callback: function (data) {
var list = data.Root;
parking.stores.parkingFacilityByCity.loadData(data.Root);
}
})
});
Любая помощь была бы высоко оценена.
Спасибо, Паван
Ответ №1:
В моей форме при нажатии кнопки я получаю значение из и передаю его методу отправки. В методе отправки я вызываю контроллер.
var select = new Ext.form.Select({
id:'selectCity',
store: parking.stores.city,
displayField: 'Name',
valueField: 'Name',
placeHolder: 'Choose City',
cls:'select'
});
var citySearchButton = new Ext.Button({
cls: 'citySearch',
text: 'Search',
handler: function () {
Ext.dispatch({
controller: parking.controllers.controller,
action: 'showMapBasedOnCity',
id: Ext.getCmp('selectCity').getValue()
});
}
});
В контроллере я вызываю метод get parking facility по городу, который отправляет новые данные в хранилище.
showMapBasedOnCity: function (options) {
var city = options.id;
getParkingFacilityByCity(city);
// parking.views.map.addMap();
parking.views.viewport.setActiveItem(
parking.views.map, options.animation
);
Data.js файл
parking.stores.parkingFacilityByCity = new Ext.data.Store({
model: 'PF',
autoload: true
});
var getParkingFacilityByCity = function (cityName) {
Ext.util.JSONP.request({
url: 'http://parking.511.org/index/M_GetParkingFacilityByCity',
callbackKey: 'callback',
params: { city: cityName },
callback: function (data) {
parking.stores.parkingFacilityByCity.loadData(data.Root);
}
});
};
Надеюсь, это кому-то поможет. Могут быть и другие методы. Но это тот, который сработал для меня довольно хорошо.