2011-01-06 13 views
1

私はExt.Elementとしてを作成するためのHTMLElementをラップしようとしていますが、これは不思議ないくつかのIDでExt.id機能を無効にして、私が説明するこの単純な例を作るしようとしていなぜExt.id関数がオーバーライドされるのですか?

そのポイント後のExtJSが使用できなくなり問題は、私はこの微妙なバグを見つけるために元のアプリケーションでコードの多くを掘る必要があったがオンラインhttp://jsfiddle.net/rdudW/1/をこのコードを試すか、Ext.Elementとして警告を表示する機能の定義を呼び出す前に、この

<html> 
<head> 
<script type="text/javascript" src="adapter/ext/ext-base.js"></script> 
<script type="text/javascript" src="ext-all.js"></script> 
<script> 
Ext.onReady(function(){ 
    alert(Ext.id) 
    var elem = Ext.Element(document.getElementsByTagName('table')[0]) 
    alert(Ext.id) 
}); 
</script> 
</head> 
<body> 
<table><table> 
</body> 
</html> 

を使用しますが、そのIDが「EXT-GEN2」

注後:私は私が新しいExt.Elementとしてを使用する必要があります知っていますしかし、それは疑問ではありません、疑問がなぜこの単純な間違いで起こるのでしょうか?

答えて

4

私はソースをスキミングしました。間違ったスコープで呼び出された場合、Ext.idが無効になるといういくつかの機能があります。 newの省略はおそらくちょうどそれをしています。これらの関数のうちの1つが、Extオブジェクトinstad Elementのコンテキストで呼び出されます。

この参照してください:あなたはnewでこれを呼び出した場合

Ext.Element = function(element, forceNew){ 
    var id; 
    /* some code here */ 

    id = dom.id; 

    /* some code here */ 

    /** 
    * The DOM element ID 
    * @type String 
    */ 
    this.id = id || Ext.id(dom); 
}; 

を、その後thisは、新しく作成されたオブジェクトを参照します。これを直接呼び出すと、thisExt

+0

を指しています。すばらしいExt.id検索を実行しました。割り当てが見つかりませんでした。 –

関連する問題