如何从控制器传递价值到数据存储在sencha触摸 [英] How to pass value from controller to data store in sencha touch

查看:90
本文介绍了如何从控制器传递价值到数据存储在sencha触摸的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有人可以告诉我如何将数据从控制器传递到数据存储区。



查看代码

  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 (数据){
var list = data.Root;
parking.stores.parkingFacilityByCity.loadData(data.Root);
}
})
});

任何帮助将不胜感激。



谢谢,
Pawan

解决方案

在我的窗体按钮上点击我得到的值并将其传递给调度方式。在调度方法中,我调用控制器。

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

希望这有帮助。也可能有其他方法。但这是对我来说很好的工作。


Can some one tell me how to pass data from controller to a data store in sencha touch.

view code

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

from my view i am able to pass the value to the controller.

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

    },

The problem is how to pass the value from here to the data store : I need the parameter from controller (the city value) to pass to my jsonp query to get the desired result back).

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

Any help would be greatly appreciated.

Thanks, Pawan

解决方案

In my Form on button click i get the value from and pass it on to the dispatch method. In the dispatch method i call the controller.

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

In the controller i call the method get parking facility by city which get the new data into the store.

  showMapBasedOnCity: function (options) {
        var city = options.id;
        getParkingFacilityByCity(city);
     //   parking.views.map.addMap();
        parking.views.viewport.setActiveItem(
            parking.views.map, options.animation
        );

Data.js file

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

Hope this helps some one. There may be other methods too. But this is the one which worked for me pretty well.

这篇关于如何从控制器传递价值到数据存储在sencha触摸的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆