2011-05-16 53 views
1

我試圖爲Ext.grid.Panel組件創建一個混合。這就是我試圖做到這一點:Extjs4創建一個mixin

Ext.define('myMixin', { 
    myFunc:function(){ 
     console.log('completed!'); 
    } 
}); 

Ext.grid.Panel.mixin('newmixin','myMixin'); 

這樣做的結果是一個mixin已經被添加到網格組件,但價值是undefined。希望我錯過了一些簡單的,但一些幫助將不勝感激。

回答

1

我已經解決了這個問題,但我仍然不是100%確定的原因。如果有人能夠解釋我更樂意將他們標記爲答案。

我做了以下內容:

Ext.grid.Panel.mixin('newmixin',Ext.define('myMixin', { 
    myFunc:function(){ 
     console.log('completed!'); 
    } 
})); 
+0

我想原因是,在你的原代碼,你試圖引用myMixin使用字符串「myMixin」:Ext.grid.Panel。混入( 'newmixin', 'myMixin');但是你只使用'myMixin'這樣的字符串來定義一個類的定義 - 在定義了它之後,引用它的對象引用:myMixin(不帶引號) – 2013-04-12 18:50:45

3

記住Ext.define異步完成。我不知道Ext.grid.Panel.mixin是什麼,因爲這並不在ExtJS的4.0.1存在,但你可以嘗試Ext.define回調參數中添加混入:

Ext.define('myMixin', { 
    myFunc:function(){ 
     console.log('completed!'); 
    } 
}, function() { 
    Ext.grid.Panel.mixin('newmixin','myMixin'); 
}); 
0

有無你試圖添加你的mixin聲明?

Ext.define('Path.to.MyMixin', { 
    someFunc: function() {return 0;} 
}); 

,然後在網格:

Ext.define('Path.to.MyGrid', { 
    extend: 'Ext.grid.Panel', 
    mixins: ['Path.to.MyMixin'], 
    ... 
});