2011-11-17 149 views
2

我想添加一個偵聽以下,但它不會火Ext.plugins.ListPagingPlugin「pullrefresh」煎茶觸摸

plugins: [{ 
       ptype: 'pullrefresh', 
       autoPaging: true, 
       listeners: { 
        'released': function(plugin,list){ 
         // call the plugins processComplete method to hide the 'loading' indicator 
         /* your_store.on('load', plugin.processComplete,  plugin, {single:true}); 
         // do whatever needs to happen for reload 
         your_store.load();*/ 
         alert('test'); 
        } 
       } 
      }], 

我想要做的是別人拉列表時刷新事件被觸發我們獲取用戶的經度和緯度並將這些值加載到商店中。我的問題是商店之前的事件:事件不正確的事件泡沫,所以它的火災儲存JSON呼叫之前,它可以得到用戶的地理位置。

My Store{ 

listeners: { 
     beforeload: function(){ 

      console.log('me1'); 
      //call this to write to location services on device 
      if (navigator.geolocation) { 
       navigator.geolocation.getCurrentPosition(function(position) { 
        console.log('me2'); 
        Rad.stores.games.getProxy().extraParams.lat = position.coords.latitude; 
        Rad.stores.games.getProxy().extraParams.long = position.coords.longitude; 
       }); 
      } 
      console.log('me3'); 
     } 
    } 
} 

如果你看看控制檯它的show me1,me3,me2 ....我希望它顯示me1,me2,me3。

我真的看過所有的論壇,文檔,但只是需要一些方向來設置監聽器和事件冒泡我猜。謝謝。

+0

0123很高興你找到答案,但你可以請添加它作爲一個答案(下),而不是作爲一個編輯你的問題?在等待期結束後,您將被允許選擇它爲正確的,這將結束您的問題。它有點奇怪,但這就是我們如何做到的。謝謝。 – Will

回答

5

這裏是你如何做到這一點:refreshFn

 // pull refresh and listupdate plugins 
     plugins: [ 
      { 
       ptype: 'pullrefresh', 
       refreshFn: function(callback, plugin) { 
        console.log('me1'); 
        if (navigator.geolocation) { 
         navigator.geolocation.getCurrentPosition(function(position) { 
          console.log('me2'); 
          Rad.stores.games.getProxy().extraParams.lat = position.coords.latitude; 
          Rad.stores.games.getProxy().extraParams.long = position.coords.longitude; 
          var store = plugin.list.getStore(); 
          store.load(function(records, operation, success) { 
           callback.call(plugin); 
           console.log('me3'); 
          }); 
         }); 
        } 
       } 
      }, 
      { 
       ptype: 'listpaging', 
       autoPaging: false, 
      } 
     ], 

這裏是商店:

});

我在找到sencha touch沒有分配工作示例,所以我會一直髮布自己的問題的答案,因爲我發現他們。

+0

該死的對這個...... :)尤其是Sencha Touch 2.0。很多需要適應.. – VDP

+0

我已經放棄對Sencha JQM是要走的路或只是去當地。 –

+1

我的評論來自一年多以前..我不想讓人氣餒。過渡期間很多地方已經發生了變化。我認爲,對於大型/企業應用,JQM缺乏ST可提供的結構。我在ST和JQM方面都有經驗,我不得不使用像knockoutJS這樣的框架和大量的想象力來進入一個體面的項目。但是,如果你想要一個小應用程序,並且需要學習ST,那麼JQM就可以工作。大多數開發人員已經知道jQuery,因此學習曲線不太陡。如果您可以分別在每個主要平臺上負擔開發費用,那麼Native就是最好的。但所有這一切都有點偏離主題:) – VDP

0

我已經更新了這一點與煎茶2.1和我的需求

我需要設置一些extraParams當pullRefresh被解僱(在我的情況顯示相同的飼料不同的過濾器)的工作。上面的例子有所幫助,但我不得不做一些調整 - 這對我Sencha觸摸2.1

我的商店被稱爲「問題」,我需要設置「類型」參數從我設置變量時用戶切換提要(MyApp.util.Config.currentFeed)。希望這可以幫助別人

plugins: [ 
{ 
    xclass: 'Ext.plugin.PullRefresh', 
    pullRefreshText: 'Pull to refresh...', 
    refreshFn: function() { 
    console.log('firing pullrefresh event'); 
    var store = Ext.getStore('Questions'); 
    store.getProxy().setExtraParam('type',MyApp.util.Config.currentFeed); 
    Ext.Viewport.setMasked({ 
     xtype: 'loadmask' 
    }); 
    store.load(function(records, operation, success) { 
     console.log('finished pullrefresh event'); 
     Ext.Viewport.setMasked(false); 
    }); 
    } 
}]