0

我对 sencha touch 2 框架上的列表组件有疑问。我的问题是,我的列表没有显示当前位置和地点之间的计算距离。
首先,当用户单击名称时,我使用带有列表(名称+距离)的导航视图,出现更多关于它们的详细信息(+ 后退按钮将自动生成)。如果按下后退按钮,列表会在列表中显示正确的距离。但我真的需要在第一时间显示距离。我尝试了很多,但没有任何帮助。我使用模型和商店:

    'Ext.define('Guide.store.ProjekteList', {
     extend: 'Ext.data.Store',

    config:{
        model: "Guide.model.ProjekteList", 
        autoLoad:true, 
        sorters: ['distance'],
        storeId: 'ProjekteList',
        proxy: {
           type: 'ajax',
           url : 'PHP/get_MainList.php',
           reader: {
              type: 'json', 
              rootProperty:'items'
           }
       },
       listeners: {
           load : function(){
                   this.each(function(store){
                       var newData = getDis(store.data);
                   });//each                    
            }//load func
        }// listener
    }//config
});// klasse

var getDis = function(dataset) {
    var geo = Ext.create('Ext.util.Geolocation', {
    autoUpdate: false,
    listeners: {
        locationupdate: function(geo) {
           polat = geo.getLatitude(); 
           polng = geo.getLongitude();  
           var B1 = dataset.Lat / 180 * Math.PI; 
           var B2 = polat / 180 * Math.PI;
           var L1 = dataset.Lng / 180 * Math.PI;
           var L2 = polng / 180 * Math.PI;
           var zwi = Math.acos(Math.sin(B1)*Math.sin(B2)     + Math.cos(B1)*Math.cos(B2)*Math.cos(L2-L1));  
           var r = 6378.137; //km
           dataset.distance  =  r * zwi;
           dataset.distance = Math.round(dataset.distance*100)/100; 

         },
        locationerror: function(geo, bTimeout, bPermissionDenied, bLocationUnavailable, message) {
            if(bTimeout){
                alert('Timeout occurred.');
            } else {
                alert('Error occurred.');
            }
        }
    }
});
geo.updateLocation();
 return dataset;

};' 

和我的模型:

'Ext.define('Guide.model.ProjekteList', {
     extend: 'Ext.data.Model',  

     config: {
         fields:  ['Projektname', 'Lat', 'Lng', 'distance', 'ID'],
     }
 });

这是我的导航视图:

'Ext.define('Guide.view.ProjekteList', {
extend: 'Ext.navigation.View', 

xtype: 'projektelist',

config: {

        title: 'Orte',
        iconCls:'Projekte' , 
        id: 'listButton',


        items:[

        { 
            xtype: 'list', 
            onItemDisclosure: true, 
        /*  plugins: [
                    {
                        xclass: 'Ext.plugin.ListPaging',
                        autoPaging: false,

                    }
                ], */   
            title: 'Sehenswerte Orte',  
                store: 'ProjekteList',
            itemId: 'liste',
            itemTpl: '<h2>{Projektname}</h2> Entfernung: {distance} km',    
            listeners: {
                           show: function(){  

                                   this.refresh();   

                             } //show function
            }, //listeners 
       } // item
      ] //items 
}// config 

}); ' 

和我的控制器

 Ext.define("Guide.controller.ProjekteList", {
extend: "Ext.app.Controller",

views: ['ProjektList'],

config: {

        refs: {  
            projekt: 'projektelist',

        },
        control: {
            'projektelist list': {
                itemtap: 'showDetail'
            }   
        }                          
    },
    showDetail: function(list, index, element, record) {    
        var projektid = record.get('ID');  

Ext.StoreMgr.get('ProjektDetail').setProxy({url:'PHP/get_Detail.php?
ID='+projektid}).load();    
         this.getProjekt().push({  
         xtype: 'projektdetails', 
         });  

    }  //     showDetail function 

}); 

提前致谢!

4

1 回答 1

0

我找到了解决方案:

只需将导航视图中的侦听器从“显示”更改为“绘制”,它就可以正常工作。

于 2012-06-19T05:58:46.257 回答