【问题标题】:How to pass value from controller to data store in sencha touch如何将值从控制器传递到 sencha touch 中的数据存储
【发布时间】:2011-12-22 07:19:13
【问题描述】:

谁能告诉我如何将数据从控制器传递到 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);
        }
    })
});

任何帮助将不胜感激。

谢谢, 帕万

【问题讨论】:

    标签: javascript extjs


    【解决方案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()
            });
        }
    });
    

    在控制器中,我调用按城市获取停车设施的方法,将新数据输入商店。

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

    希望这对某人有所帮助。可能还有其他方法。但这对我来说效果很好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多