extjs - 无法使用 ST2 访问 NameSpace.app 变量?

标签 extjs sencha-touch sencha-touch-2

我正在将 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/

相关文章:

extjs - 在 Ext JS Grid 中创建动态列

sql - Sencha Mysql 查询

javascript - 如何从 html 文件创建 sencha touch xtemplate

ios - 在 Xcode 中创建 Sencha Touch、Phone Gap 项目

extjs - Sencha 触摸 : Display Image from Database

extjs - 如何在sencha touch中获取值(value)形式记录

javascript - 如何在 sencha touch 或 ext js 文本字段中添加水印

sencha-touch-2 - 将外部 URL 加载到选项卡面板中?

javascript - ExtJS 隐藏字段与存储

sencha-touch - 主题 Sencha 触摸错误 : File to import not found or unreadable: sencha-tou ch/default/all