2011-07-26 9 views
1

ここでやろうとしていることをうまく反映するために私の質問を完全に書き直しました。これまでのところあなたのご協力に感謝しています。Senchaスコープの問題

私はこのコードを保持しているen.jsと呼ばれるファイルがあります:

Ext.apply(Ext.locale || {}, { 
variable:  'great success!'  
}); 

ここに私のindex.jsセットアップコードだ:

Ext.setup({ 
tabletStartupScreen: 'tablet_startup.png', 
phoneStartupScreen: 'phone_startup.png', 
icon: 'icon.png', 
glossOnIcon: false, 
onReady: function() { 
    Ext.locale = {}; 
    var headID = document.getElementsByTagName("head")[0], 
    newScript = document.createElement('script'); 
    newScript.type = 'text/javascript'; 
    newScript.src = 'en.js'; 
    headID.appendChild(newScript); 
    loginPanel = new login.Panel(); 
} 
}); 

login.Panelは煎茶パネルの拡張であるがExt.extendを使ったクラスです。

'en.js'スクリプトがヘッダーに正しく追加されています。 index.htmlファイルにはありません。なぜなら、この問題が解決されると、関数の出力に応じて、ロードできるファイルがいくつかあるからです。そのため、スクリプトをonReady関数のヘッダーに追加する必要があり、index.htmlファイル自体には追加する必要はありません。

スクリプトが追加されると、変数: 'great success'がExt.localeにロードされます。 現在、私の問題はlogin.Panel()内にあります。これはExtを使ったSenchaパネルクラスの拡張です。延長する。 現在、パネルにボタンがあります。

私は、ボタンのハンドラ内でこれを入れた場合:

console.log(Ext.locale.variable) 

それが文字列「大成功」を返し、まだ

私はこのようなボタンのテキストを設定しよう:

text:Ext.locale.variable, 

エラーが発生します

Uncaught TypeError: Cannot read property 'variable' of undefined 

私はconsole.log()とalert()が両方ともExt.localeにアクセスできるので、ここでスコープの問題があると思いますが、フォームを構築するためにそれを使用しようとすると私に未定義のエラーが発生します。

ご協力いただければ幸いです。

ありがとうございました!

+0

[Ext.apply](http://dev.sencha.com/deploy/touch/docs/source/Ext.html#のinstedないのはなぜメソッド - Ext-apply)は、あるjavascript Object(2番目の引数)のすべてのプロパティを別のjavascript Object(最初のparam)にコピーするメソッドです。ここで何をしようとしているのかわかりません。関数を上書きする以外に、何かを行うために正しく書かれていません。 –

+0

ええ、私は盲目です。申し訳ありませんが、何らかの理由でそこに気付かなかったのです。私のメインポストを編集しました。 – methusalem

答えて

2

あなたが早い段階でスクリプトからExt.localeを定義しているように、それはその後onReadyであなたがとしてそれを上書きしている音...

onReadyは、他のすべてのスクリプトがロードされた後に実行されます。

onReadyにロケールのためのあなたの初期化コードを移動し、あなたの= {}ライン

+0

Ext.localeは、 "ext.apply"関数が "newScript"ファイルとしてヘッダにロードされているスクリプトを追加する前に定義されています。変数は単純にlogin.Panelに継承されないようですが、login.PanelはExt.extendを使用するPanelクラスの拡張であるためです。私は私の質問がちょうど十分に明確に言われていないと思う。私はそれをきれいにしようとします。 – methusalem

+0

私は同じ問題に直面しています。あなたが問題の解決策を見つけた場合に備えて、私を助けてください。 – Khush

0

これは、3つのプロパティとその値を受信オブジェクトに追加します。

Ext.apply(receivingObject, { 
     property1: 'value1', 
     property2: 'value2', 
     property3: 'value3' 
}); 

はここも煎茶のExt.apply方法に関するドキュメントです、あなたはif(someExtObj.isReady)ような何かを行うことができisReadyプロパティにアクセスするためとして http://dev.sencha.com/deploy/touch/docs/source/Ext.html#method-Ext-apply

が、あなたはonReadyを使用して、より興味がある可能性があり方法...

Ext.setup({ 
    onReady: function() { 
     // your setup code 
    } 
}); 
+0

私はonReadyメソッドを使用しています。私は十分に具体的ではないことを認識して、私の質問にもっと多くのコードを提供しました。ありがとうございました! – methusalem