Как передать значение из контроллера в хранилище данных в Сенча Touch - PullRequest
0 голосов
/ 04 ноября 2011

Может кто-нибудь сказать мне, как передать данные из контроллера в хранилище данных в 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 Ответ

1 голос
/ 13 ноября 2011

В моей форме при нажатии кнопки я получаю значение и передаю его методу отправки. В методе отправки я вызываю контроллер.

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;
        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);
        }
    });
};

Надеюсь, это кому-нибудь поможет. Могут быть и другие методы. Но это тот, который работал для меня довольно хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...