2013-12-19 59 views
0

法「getHeader」我嘗試從與它修改的數據更新dataview.List的記錄的副form.Panel煎茶:不能調用未定義

代碼:

onListItemTap:function(list,index,target,record,e){ 
      this.getMain().push({ 
      xtype:'userform', 
      title:record.data.name, 
      record:record, 
      listeners:{ 
         hide:function(form){ 
          record.setData(form.getValues()); 
          list.refresh(); 
         } 
        } 
      }); 
     }, 

後面的代碼record.setData(...); list.refresh();
頁收到錯誤:
遺漏的類型錯誤:無法調用「getHeader」未定義

回答

1

好像有問題與煎茶觸摸2.3.1,我使用。 我只是評論grouped = true屬性列表組件。有用。

代碼:

 { 
     xtype:'list', 
     id:'list-user', 
     store:'Users', 
     itemTpl: new Ext.XTemplate(...), 
     flex:1, 
     //grouped:true 
     } 

希望這一發現將節省時間和挫折,從爲你。

0

組頭在商店中沒有記錄。這個覆蓋通過檢查是否確實在store中調用了哪個scrollToRecord的記錄來解決問題。此外,它解決了在painted事件中調用scrollToRecord時可能的情況,headerMap尚未準備好,這意味着在使用scrollToRecord時pinnedHeader未正確更新。

Ext.define("MyApp.override.List", { 
    override:'Ext.dataview.List', 
    scrollToRecord: function(record, animate, overscroll) { 
     var me = this, 
      store = me.getStore(), 
      index = store.indexOf(record); 
     if(index>-1 && index < this.listItems.length) { 
      this.updateHeaderMap(); 
      this.callOverridden(arguments); 
     } 
    } 
}); 
1

問題是方法updateHeaderMap列表組件。

Ext.define('Nerine.override.List', { 
    override:'Ext.dataview.List', 

    updateHeaderMap: function() { 

     var me = this, 
      headerMap = me.headerMap, 
      headerIndices = me.headerIndices, 
      header, i, item; 

     headerMap.length = 0; 
     for (i in headerIndices) { 
      if (headerIndices.hasOwnProperty(i)) { 
       /* fix bug */ 
//    console.log('aaa', me.getItemAt(i)); return null 
//    console.log('bbb', me.getItemAt(i).getHeader()); 
       if(!(item = me.getItemAt(i))) { 
        continue; 
       } 
       header = me.getItemAt(i).getHeader(); 
       headerMap.push(header.renderElement.dom.offsetTop); 
      } 

     } 

    } 
});