如何延迟加载的sencha视图

时间:2012-12-31 14:35:56

标签: android cordova extjs sencha-touch sencha-touch-2

我的应用程序完成加载后,我正在显示选项卡面板,默认的第一个选项卡(选项卡面板中的第一项)将出现在屏幕上。

        Ext.Viewport.add({
        xtype : 'myTab'
    });

当标签面板加载时,我将根据纬度和经度在第一个标签中显示消息集。

我在控制器初始化方法中使用phonegap得到纬度和经度,控制器初始化方法将首先在其他任何东西之前被调用。

我正在向我的服务器发送一个ajax请求,当第一个标签绘制时,纬度和经度作为参数。

我的问题是,在获得经度和经度之前需要花费一些时间给出经纬度,我的观点很痛苦并且正在发出ajax请求。

所以我无法使用ajax请求将纬度和经度作为参数发送。

如何将标签面板延迟一段时间?

这是我的手机间隙代码,用于获取纬度和经度(在控制器初始化方法中)。

        var gotLocation = false;
    var GEO_OPTS = {
        enableHighAccuracy : true,
        maximumAge : 120000,
        timeout : 6000
    };
    var onSuccess = function(position) {
        if (gotLocation)
            return;
        console.log('inside onsuccess');
        if (position.coords.accuracy <= 1000) {
            var lat = position.coords.latitude;
            var lon = position.coords.longitude;

            console.log('Got location at end');
            gotLocation = true;
            // proceed to fetch messages
            var radius = localStorage.radius ? localStorage.radius : 5;

            console.log('radius :' + radius);
            var unit = localStorage.unit ? localStorage.unit : "M";
            var rangeText = ' ' + radius;
            if (unit == 'M')
                rangeText = rangeText + ' mi';
            else
                rangeText = rangeText + ' km';
            var listCaption = 'All wants within' + rangeText;

            localStorage.latitude = lat;
            localStorage.longitude = lon;
            localStorage.radius = radius;
            localStorage.unit = unit;
            localStorage.rangeText = rangeText;
            localStorage.listCation = listCaption;
            console.log('Range Text:' + rangeText);
            console.log('list Caption:' + listCaption);
        }
    };

    var onError = function (error) {
        navigator.notification
                .alert("oops..." + error.code + error.message);
    };

    navigator.geolocation.getCurrentPosition(onSuccess, onError, GEO_OPTS);

1 个答案:

答案 0 :(得分:1)

你可以做2件事 1.在将选项卡面板添加到视口

的代码中添加一些延迟
Ext.defer(function(){ 
    Ext.Viewport.add({
      xtype : 'myTab'
    });
}, 500, this);

2。在成功处理函数中添加mytab

var onSuccess = function(position) {
    /* All the existing code*/
    Ext.Viewport.add({
        xtype : 'myTab'
    });
}