【问题标题】:Unable to access NameSpace.app variables with ST2?无法使用 ST2 访问 NameSpace.app 变量?
【发布时间】:2013-03-12 22:34:45
【问题描述】:

我正在使用 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

我不完全确定为什么会发生这种情况或如何解决它。我对任何和所有想法或建议持开放态度,任何正确方向的指示将不胜感激。

【问题讨论】:

    标签: extjs sencha-touch sencha-touch-2


    【解决方案1】:

    遇到了完全相同的问题。您无法访问视图中的命名空间应用程序......真的很糟糕,他们让您在开发中而不是在构建时。无论如何,我通过添加一个静态助手类并在我的应用程序中使用它来解决它:

    在 /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 代码放在一个大的压缩文件中。

    【讨论】:

    • 你就是那个男人 jakerella。非常感谢您的帮助,我很感激。
    • 没问题,我找不到任何答案,并在这上面破解了 4 个小时......很高兴它帮助了其他人。请注意,您实际上有一个用于此帮助程序类的单独文件,这一点很重要。构建不会失败,但是如果您尝试在 app.js 中定义它(这将在 dev 中工作),您的代码将无法工作。
    • 谢谢伙计!我偶然发现了这个问题,甚至在遇到这个问题之前就做了你推荐的事情;-)
    猜你喜欢
    • 2019-08-23
    • 1970-01-01
    • 2015-07-09
    • 1970-01-01
    • 2020-12-13
    • 2014-06-04
    • 1970-01-01
    • 1970-01-01
    • 2021-09-22
    相关资源
    最近更新 更多