2013-12-11 66 views
0

對於我的移動應用程序,我使用Sencha Touch。我創建了一個組件來顯示一個表。Sencha Touch:如何在setData()之後刷新組件的數據?

代碼我的組件的:

我認爲實施
Ext.define('MyApp.components.table.Table', { 
extend: 'Ext.Container', 
xtype: 'table', 

config: { 
cls: 'myTableCSS', 
scrollable: 'vertical', 
tpl: Ext.create('Ext.XTemplate', 
    '<tpl for=".">', 
     '<table>', 
      '<tr>', 
       '<tpl for="headers">', 
        '<th>{html}</th>', 
       '</tpl>', 
      '</tr>', 
      '<tpl for="rows">', 
       '<tr>', 
        '<tpl for="columns">', 
          '<td>{html}</td>', 
        '</tpl>', 
       '</tr>', 
      '</tpl>', 
     '</table>', 
    '</tpl>' 
} 
}); 

代碼:

我的控制器的
xtype: 'table', 
id: 'myRedTable', 
data: [ 
    { 
     headers: [ 
      { html: 'firstname' }, 
      { html: 'lastname' }, 
      { html: 'age' } 
     ], 
     rows: [ 
      { 
       columns: [ 
        { html: 'John' }, 
        { html: 'Smith' }, 
        { html: '38' }, 
       ] 
      } 
     ] 
    } 
], 

代碼這使得AJAX請求,以便從服務器加載數據:

getResultFromServer: function(jsonResult) { 
    var persons = jsonResult.getParameter('persons'); 
    this.getTable().setData(persons); 
}, 

當我加載應用程序,我第一次去我的屏幕(數據加載後服務器通過AJAX請求),我的數據很好地顯示在屏幕上。

但是,當我導航到應用程序並返回到屏幕時,向服務器發出一個新請求以刷新屏幕上的數據,但表格未在setData();後刷新。

如何刷新data使用tplconfig屬性創建的組件?

P.S. :我沒有store

回答

1

我的問題是其他地方和setData();運作良好。這是一個與Ext.get()方法有關的緩存問題。

0

有2小票可以給你一個線索來解決這個問題:

  1. 你爲什麼要延長Ext.Container,而這是更好地延長Ext.dataview.DataView?我很確定你想顯示一個相關數據的視圖,Ext.DataView是最好的方法。

  2. 如果您的視圖的數據是從data對象填充的,如果您使用yourDataView.refresh()方法重新加載數據源並重新呈現您的視圖,它將會正常工作。

希望它有幫助。

+0

我使用容器來顯示'

'HTML元素。這個列表並不適用於我的情況,我希望顯示帶有標題和單元格的數據,這些數據與內部數據相關。 – Zistoloen

相關問題