我完全重写了我的问题,希望能更好地反映我在这里要做的事情。到目前为止,非常感谢你们的帮助。
我有一个名为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的Sencha面板类的扩展。
'en.js'脚本正确添加到标题中。我在index.html文件中没有它,因为一旦解决了这个问题,将会有几个可以加载的文件,具体取决于函数的输出。这就是为什么我需要将脚本添加到onReady函数的头文件中,而不是在index.html文件本身中。
一旦添加了脚本,它就会将“变量:'非常成功'”加载到Ext.locale中, 然而我的问题目前在于login.Panel(),它是使用Ext.extend的Sencha面板类的扩展。 目前,面板中有一个按钮。
当我把它放在按钮的处理程序中时:
console.log(Ext.locale.variable)
它返回字符串“非常成功”,
但是当我尝试像这样设置按钮的文本时:
text:Ext.locale.variable,
我收到错误
Uncaught TypeError: Cannot read property 'variable' of undefined
我猜这里有一个范围问题,因为console.log()和alert()都可以访问Ext.locale,但是尝试用它来构造表单会给我一个未定义的错误。
非常感谢任何帮助。
谢谢!
答案 0 :(得分:2)
听起来你早就在脚本中定义了Ext.locale
...然后在onReady中你将它覆盖为Ext.locale = {}
onReady
将在加载完所有其他脚本后运行。
为什么不将您的语言环境初始化代码移到on {= {}
行的onReady中
答案 1 :(得分:0)
这会将三个属性及其值添加到接收对象。
Ext.apply(receivingObject, {
property1: 'value1',
property2: 'value2',
property3: 'value3'
});
这里也是关于Ext.apply方法的Sencha文档: 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
}
});