2011-05-24 134 views
6

我有一个面板煎茶触摸:刷新列表:商店

prj.views.NewsList = Ext.extend(Ext.Panel, { 
    layout: 'card', 
    initComponent: function() {  
     this.list = new Ext.List({    
      itemTpl: '......', 
      loadingText: false, 
      store: new Ext.data.Store({ 
       model: 'News', 
       autoLoad: true, 
       proxy: { 
        type: 'ajax', 
        url: '.....',     
        reader: { 
         type: 'json', 
         //root: '' 
        } 
       }, 
       listeners: { 
        load: { fn: this.initializeData, scope: this } 
       } 
      }) 
     }); 

     this.list.on('render', function(){ 
      this.list.store.load(); 
      this.list.el.mask('<span class="top"></span><span class="right"></span><span class="bottom"></span><span class="left"></span>', 'x-spinner', false); 
     }, this); 

     this.listpanel = new Ext.Panel({ 
      items: this.list, 
      layout: 'fit',    
      listeners: { 
       activate: { fn: function(){ 
        this.list.getSelectionModel().deselectAll(); 
        Ext.repaint(); 
       }, scope: this } 
      } 
     }) 

     this.items = this.listpanel;  
     prj.views.NewsList.superclass.initComponent.call(this); 
    }, 
}); 

Ext.reg('newsList', prj.views.NewsList); 

在一个dockedItem工具栏设置里面的消息已在Ext.List名单,我有一个图标,以刷新列表。

items: [ 
    { 
     iconCls: 'refresh',        
     handler: function() {         
     prj.view.NewsList.list.store.read() 
     } 
    }, 
] 

但是prj.view.NewsList返回undefined!我如何获得清单以刷新商店?

+0

我通过Ext.StoreMgr.get('newsStore')。load()检索商店。但是我怎样才能刷新列表中的面板? Sencha Touch 2.x bindStore上的 – BasicCoder 2011-05-24 15:48:23

回答

5

即使我遇到了类似的问题。 我张贴我的答案希望这可以帮助某人。

我有一个搜索栏来搜索数据。 (我的搜索是在服务器发生,其结果是在回应我的GET请求发回给我

基本上我不得不更改URL我店

什么都我尝试:

  1. myList.refresh(),
  2. myStore.load();
  3. 清除存储,然后加载它
  4. 除去列表,然后重新添加,并迫使它重新渲染(使用的doLayout())

毫无效果......

只需添加一行固定我的问题

function handleSearch(strSearchText) 
    { 
    //myStore.loadData([],false); /tried to clear the store and reloading it 
    if(strSearchText !='') 
    { 
     searchString = '?search='+strSearchText; 
     searchURL = searchURLBasic+ searchString; 
    }else{ 
     searchURL = searchURLBasic; 
    } 
    console.log('search URL: ' + searchURL); 
    myStore.proxy.url =searchURL;   // this was one magical line of code that saved my life 
    myStore.load(); 
} 

太感谢支持。

14

调用此行的刷新按钮,当你调用存储中的load()方法

Ext.StoreMgr.get('newsStore').load() 

名单automaticaly刷新。商店链接到列表。

例子:

items: [ 
    { 
     iconCls: 'refresh',  
     handler: function(event, btn) { 
      Ext.StoreMgr.get('newsStore').load(); 
     }   
    }, 
] 
1

我这样做改变了商店的时候,它就像一个冠军

var yourbutton = new Ext.Panel({ 
    listeners: { 
     afterrender: function(c){ 
      c.el.on('click', function(){ 
       YourList.update(); 
       YourList.bindStore(newStore); 
      }); 
     } 
    } 
}); 
+0

不存在。应该使用setStore(),但我也有问题。 – AnthonyVO 2014-04-23 22:32:02