我正在将 Sencha Command Line 3 工具与新生成的 Sencha Touch 2 应用程序一起使用。
假设我的 app.js 文件如下所示:
Ext.application({
name: "CA",
event_code: "test123",
launch: function() {
console.log("application launched!");
}
});
我的 View 和对象存储取决于根据等于“test123”的 CA.app.event_code 生成 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
我不完全确定为什么会发生这种情况或如何解决它。我对任何和所有想法或建议持开放态度,任何正确方向的指示都将不胜感激。
最佳答案
遇到了完全相同的问题。您无法访问 View 中的命名空间应用程序...真的很糟糕,它们让您进行开发而不是在构建时进行。不管怎样,我通过添加一个静态帮助器类并在我的应用程序中使用它来解决这个问题:
在/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...
}
});
然后在您的 View 或 Controller 中:
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 代码放入一个大的压缩文件中。
关于extjs - 无法使用 ST2 访问 NameSpace.app 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15343537/