我正在使用Sencha Command Line 3工具和新生成的Sencha Touch 2应用程序。
假设我的app.js文件如下所示:
Ext.application({
name: "CA",
event_code: "test123",
launch: function() {
console.log("application launched!");
}
});
我的视图和对象存储依赖于生成基于CA.app.event_code等于“test123”的URL;
在浏览器开发期间,一切正常,CA.app返回我需要的变量。
当我使用sencha app build编译我的应用程序并尝试在浏览器中运行缩小版本时,我收到如下错误:
Error evaluating http://localhost:8888/app.js with message: TypeError: Cannot read property 'event_code' of undefined localhost:11
我不完全确定为什么会发生这种情况或我如何解决它。我对所有的想法或建议持开放态度,任何指向正确方向的人都将不胜感激。
答案 0 :(得分:4)
进入完全相同的问题。您无法访问视图中的命名空间应用程序...真的很糟糕,他们让您在开发中而不是在构建时。无论如何,我通过添加一个静态助手类并在我的应用程序中使用它来解决它:
在/app/util/Helper.js中:
Ext.define('MyApp.util.Helper', {
singleton: true,
alternateClassName: 'Helper',
config: {
foo: "bar",
bat: "baz"
},
staticFunction: function() {
// whatever you need to do...
}
});
然后在你的视图或控制器中:
Ext.define('MyApp.view.SomeView', {
...
requires: ['Events.util.Helper'],
...
someViewFunction: function() {
var someValue = Helper.staticFunction();
// and you can use Helper.foo or Helper.bat in here
}
});
供参考,以下是Sencha Singletons的一些文档。还有一个重要的注意事项:确保你的Helper单例存在于它自己的文件中!如果它很小,你可能倾向于把它放在app.js的底部,事情会先工作,并且构建过程将起作用,但代码不会。不用担心,构建过程无论如何都会将所有JS代码放在一个大的压缩文件中。