动态地将项目从Store加载到Controller

时间:2012-06-08 10:14:26

标签: javascript google-maps extjs sencha-touch-2

如何将我的商店动态加载到我的控制器中,以便能够在录制列表中的任何项目后加载lat并登录地图。

listeners: {
            maprender: function(component, map, geo, eOpts) {
                var position = new google.maps.LatLng(5.978132,116.072617);
                var marker = new google.maps.Marker({
                    position: position,
                    map: map
                        });

                var infowindow = new google.maps.InfoWindow({
                    content: 'Working Fine'
                        });

            google.maps.event.addListener(marker, 'click', function() {
                    infowindow.open(map, marker);
                        });

            setTimeout(function() {
                    map.panTo(position);
                }, 1000);

                },
           }, 

上面的代码有效,但它只为列表中的所有项找到一个特定位置,因为lat和log是静态的。我想让它从我的商店动态加载lat和日志。

我的商店:

Ext.define('List.store.Presidents', {
extend : 'Ext.data.Store',

config : {
model : 'List.model.President',
sorters : 'lastName',
storeId: 'contactmap',
grouper : function(record) {
    return record.get('lastName')[0];
},

data : [{
    firstName : "Ikhlas HQ",
    lastName : "Tower 11A, Avenue 5, Bangsar South, No.8 Jalan Kerinchi 59200 Kuala Lumpur",
    lat : 3.110649,
    lng : 101.664991,
    id: '200',
},
{
    firstName : "PEJABAT WILAYAH SELANGOR",
    lastName : "No. 97, 97-1 & 97-2, Jalan Mahogani 5/KS7, Ambang Botanic, 41200 Klang, Selangor",
    lat : 3.003384,
    log : 101.45256,
    id: '001',
},]}
});

我的控制器:

Ext.define('List.controller.Main', {
extend: 'Ext.app.Controller',
config: {
refs: {
    main: 'mainpanel',
  },
control: {
    myList: {
        itemtap: 'onMyListItemTap'
    },
    'presidentlist': {
            disclose: 'showDetail'
        },
 }
},
showDetail: function(list, record) {
            this.getMain().push({
                xtype: 'presidentdetail',
                title: record.fullName(),

onMyListItemTap: function(list, index, target, record, e, eOpts) {

//需要一些功能来加载我的商店     }     });     },     });

1 个答案:

答案 0 :(得分:0)

你可以采取两种方式......

list.getStore();

应返回与列表关联的商店。

但是,onMyListItemTap函数返回“记录”作为其参数的一部分,所以你可以这样做:

var lat = record.get('lat'),
    long = record.get('long');