2011-07-26 168 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文件本身中。

一旦腳本已經添加加載「變量:‘巨大的成功’」到Ext.locale, 但我的問題在於目前內login.Panel(),這是一個使用分機的煎茶麪板類的一個擴展。延伸。 目前,面板上有一個按鈕。

當我把這個按鈕的處理程序:

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#方法-Ext-apply)是將所有屬性從一個javascript對象(第二個參數)複製到另一個javascript對象(第一個參數)的方法。我不確定你在這裏試圖用它做什麼,而你的代碼示例寫入不正確,除了覆蓋該函數之外,根本無法執行任何操作。 –

+0

哈,我是盲人。對不起,我沒有注意到「=」出於某種原因。編輯我的主要職位。 – methusalem

回答

2

這聽起來像您從腳本onReady定義Ext.locale早......再後來要覆蓋它爲Ext.locale = {}

onReady將在所有其他腳本加載後運行。

爲何不動的區域到onReady您的初始化代碼insted的你= {}

+0

Ext.locale是在添加將「Ext.apply」函數加載到標題中的腳本之前定義的,作爲「newScript」文件。看起來這個變量根本不會傳遞到login.Panel,但它應該是login.Panel只是使用Ext.extend的Panel類的擴展。我想我的問題只是措辭不夠清楚..我會盡力清理它。 – methusalem

+0

我面臨同樣的問題。如果你已經找出解決問題的方法,請幫助我。 – Khush

0

這會將三個屬性及其值添加到接收對象。

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

這也是對Ext.apply方法煎茶文檔: http://dev.sencha.com/deploy/touch/docs/source/Ext.html#method-Ext-apply

至於訪問的isReady屬性,你可以不喜歡if(someExtObj.isReady),但你可能會更感興趣的使用onReady方法...

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

我正在使用onReady方法。我在我的問題中提供了更多的代碼,意識到我不夠具體。謝謝! – methusalem