【问题标题】:Sencha AlternateClassName do not work in compiled versionSencha AlternateClassName 在编译版本中不起作用
【发布时间】:2014-09-09 03:25:41
【问题描述】:

我正在使用 Sencha 应用程序。
我创建了几个实用程序类作为单例组件(帮助程序、服务等)。
我正在使用 alternateClassName 为这些类设置一个较短的名称。
它工作完美,但在编译生产后停止工作。

我不知道为什么,需要帮助才能让它工作!

看下面的例子:
为简单起见,我使用 sencha cmd 创建了一个演示应用程序。该应用程序是“演示”。
整个应用程序是默认的,但我在应用程序内添加了一个 util 文件夹,其中包含一个文件 Helper.js。这是代码:

Ext.define('Demo.util.Helper', {
    singleton: true,
    alternateClassName: 'Helper',

    test: function () {
        alert('It works !');
    }
});

然后,我只需要更新 app.js 以要求这个新文件,并在添加主视图后更新启动函数以调用测试方法。所以这里是在 app.js 中使用的代码:

requires: [
    'Ext.MessageBox',
    'Demo.util.Helper'
],

启动功能:

launch: function () {
    // Destroy the #appLoadingIndicator element
    Ext.fly('appLoadingIndicator').destroy();

    // Initialize the main view
    Ext.Viewport.add(Ext.create('Demo.view.Main'));

    Helper.test();
},

现在,如果我尝试示例,在加载应用程序后,会成功显示警报消息。

但是在使用 sencha cmd 编译之后

sencha 应用构建生产

我收到此错误:

我知道问题出在备用类名上,因为如果我使用全名(而不是备用类名),它仍然可以工作。但是我想使用备用类名,否则没有任何意义。

知道编译后的版本有什么问题吗?

TIA! 米尔顿

【问题讨论】:

    标签: extjs sencha-cmd sencha-touch-2.3


    【解决方案1】:

    一段时间后,我们意识到 Sencha 在为生产编译单例类时有一个错误(也适用于测试)。

    解决方案是删除单例标志,并在启动方法中为所有单例类创建应用程序变量。

    例如:

    Demo.Helper = Ext.create('Helper');
    

    希望对您有所帮助!

    更新

    Sencha Cmd 的最新版本充满了可怕的错误! 修复了这个之后发现了很多其他的问题,最后找到了这个链接http://www.sencha.com/forum/showthread.php?288972-MyAppName.app-not-working-on-build-production&p=1064635

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-03
      • 2014-09-05
      • 1970-01-01
      • 2016-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多