2016-12-17 66 views
1

您可以教我如何調用嵌套方法嗎?基本的想法,我想有一個類內的功能,我可以通過發送另一個具有不同返回路徑的folderSelector從外部配置。但現在,當我嘗試這樣做,ExtJS的對我說:如何在新創建的類中使用嵌套方法Ext.define

[W] XTemplate evaluation exception: foldersSelector is not a function 

代碼示例:

Ext.define('somepath.Some1', { 
 
extend: 'somepath.SomeParent', 
 
text: 'sometext', 
 
foldersSelector: function(data){ 
 
\t return data.folders; 
 
}, 
 
initComponent: function(){ 
 
    ... 
 
    this.callParent(); 
 
} 
 
renderer: function(data){ 
 
\t bla bla bla/got data from somewhere 
 
\t ... 
 
\t ... 
 
\t foldersSelector(data); 
 
    // with this.foldersSelector result the same! 
 
} 
 
});

+0

父類:「Ext.grid.column.Column」 –

回答

1

你缺少你的功能this。您需要從類對象中調用該函數。事情是這樣的:

Ext.define('MyApp.view.MyPanel', { 
    extend: 'Ext.panel.Panel', 
    alias: 'widget.mypanel', 


    height: 250, 
    width: 400, 
    title: 'My Panel', 
    defaultListenerScope: true, 


    listeners: { 
     render: 'onPanelRender' 
    }, 

    onPanelRender: function(component, eOpts) { 
     // call using this 
     this.folderSelector(); 
     // call using component 
     component.folderSelector(); 
    }, 

    folderSelector: function(data) { 
     console.log('Function') 
    } 

}); 

小提琴https://fiddle.sencha.com/#view/editor&fiddle/1mpe


你的情況,你是在網格列,你不能叫this,因爲這是網格。你必須得到專欄。

Ext.define('MyApp.view.MyColumn3', { 
    extend: 'MyApp.view.SuperColumn', 
    alias: 'widget.mycolumn3', 

    id: 'myColumnId', 

    foldersSelector: function (data) { 
     console.log('I AM CALLED'); 
     return data + '-SOSO' 
    }, 

    renderer: function(value, metaData, record, rowIndex, colIndex, store, view) { 
      // you have to get the column, there are many ways how to do so     
      var c = Ext.first('#myColumnId') 
      return c.foldersSelector(value) 
    } 

    // option without the id 
    renderer: function(value, metaData, record, rowIndex, colIndex, store, view) {  
      // this is the grid 
      var gridColumns = this.getColumns(); 
      // we know the column index 
      var c = gridColumns[colIndex]; 
      return c.foldersSelector(value) 
    } 


}); 

小提琴:https://fiddle.sencha.com/#view/editor&fiddle/1mpo

+0

你的答案是好的,它真正的視圖組件的作品,但我忘了說,我的是內線的孩子。 grid.column.Column,它具有渲染器方法。 我應該把這個問題標記爲已解決,並要求anoter一個Ext.grid.column.Column?( –

+0

@EldarNezametdinov我已經更新瞭解答你的解答 – pagep

+0

萬一我有很多對象具有相同的id extjs將返回一個錯誤:重複的id。'id:'myColumnId',''和'Ext.first('#myColumnId')'是如此硬編碼的.. 任何其他方式獲取列? 我標記的問題已解決,因爲它已經很 我在很多網格中使用了這個列,所以我不能只有一個Id,對於許多實例列。 –

相關問題