2011-08-09 12 views
1

グリッド列をレンダリングするのに 'myRendInside'関数を使用できない理由がわかりません。 myRendGlobalを使用する必要があります。また、「renderer: function(val) {blah blah'」とすることもできます。 'this.myRendInside'は解決されません。Extjs 4.0 MVCグリッドカラムレンダラー機能のスコープの問題

function myRendGlobal (val, metaData, record, rowIndex, colIndex, store) { 
     return val + 'abc' 
     }; 
Ext.define('AM.view.Event.Grid', { 
     extend: 'Ext.grid.Panel', 
     myRendInside: function (val, metaData, record, rowIndex, colIndex, store) { 
      return val + 'xyz' 
     }, 
     columns: [{ 
      dataIndex: 'name', renderer : this.myRendInside 
     }, 
     { 
      dataIndex: 'phone', renderer : myRendGlobal 
     }, 
     . 
     . 
     . 

答えて

6

これは、コンストラクタまたはinitComponentメソッドの列を定義することで解決できます。レンダラーとして割り当てるメソッドは、コンポーネントライフサイクルのこの時点まで使用できません。

initComponent(){ 
     this.columns: [{ 
     dataIndex: 'name', renderer : this.myRendInside 
     } 
     ... 
     ] 
     this.callParent(arguments);   
    }