【问题标题】:ExtJs minify Gets ignoredExtJs minify 被忽略
【发布时间】:2015-11-20 14:19:16
【问题描述】:

我们有一个 CMS,所以我无法访问为我们的 extjs 实现呈现的 HTML 页面的标题。所以我不得不做一个这样的解决方法:

 Ext.local = {};
    var lang = {
        initLang: function (revisionNr) {
            var local = localStorage.getItem('localLang')
            if (!local) {
                AjaxHandlerByClass('ajax/lang/webuser/init', {}, this.loadLangRemote);
            } else {
                local = JSON.parse(local);
                if (local.revisionNr == config.revisionNr && local.lang == config.lang) {
                    console.log('loading local lang variables');
                    if (local.date < new Date().getTime() - (24 * 60 * 60 * 1000) * 2) {//2 day caching time before retry
                        delete window.localStorage.localLangBackup;
                    }
                    this.loadLangLocal(local);
                } else {
                    delete window.localStorage.localLang;
                    AjaxHandlerByClass('ajax/lang/webuser/init', {}, this.loadLangRemote);
                }
            }
        },
        loadLangRemote: function (data) {
            data.revisionNr = config.revisionNr;
            data.lang = config.lang;
            data.date = new Date().getTime();
            lang.loadLangLocal(data);
            localStorage.setItem('localLang', JSON.stringify(data));
        },
        loadLangLocal: function (data) {
            var jsElm = document.createElement("script");
            jsElm.type = "application/javascript";
            jsElm.src = 'js/freetext-deploy.min.js?rev={/literal}{$revisionNr}{literal}';

            document.getElementsByTagName('head')[0].appendChild(jsElm);

            Ext.Date.defaultFormat = 'd-m-Y';
            if (!debug) {
                Ext.Loader.config.disableCaching = true;
            }


            Ext.application({
                name: 'freetextOrder',
                appFolder: 'modules/extjs/freetextOrder/app',
                controllers: [
                    'Main'
                ],
                launch: function () {
                    
                    var freetextOrder = Ext.create('Ext.container.Container', {
                        renderTo: Ext.get('freetextOrderDiv'),
                        layout: 'fit',
                        id: 'catalogAdministrationDiv_ext',
                        height: 800,
                        cls: 'x-dig-override',
                        items: [Ext.create('freetextOrder.view.base.MainView', {})],
                        layout:'fit'
                    });
                }
            });
            Ext.local = data;
        }
    };
    lang.initLang();

我遇到的问题是缩小版本被完全忽略。我看到它加载在 http 请求上,但 extjs 忽略了它们....即使我可以看到在 include 之后正在创建对象(通过控制台日志)

有人知道我该如何实现吗?

【问题讨论】:

    标签: javascript oop extjs localization extjs4


    【解决方案1】:

    我看到没有人找到答案,所以我在这里发布了我自己想出的答案。

    因为看在上帝的份上我可以不加载该死的东西,所以我重构了加载器并将其导出为 Js。文件。我需要并稍后在代码中调用它。

    导出的 lang.js 文件:

    Ext.define('Lang', {
        singleton: true,
        ApplicationConf: null,
        Launch: function (launchConfig) {
    
            this.ApplicationConf = launchConfig;
    
            var local = localStorage.getItem('localLang');
            var me = this;
    
            this.loadLangRemote = function (data) {
                debugger;
                data.revisionNr = config.revisionNr;
                data.lang = config.lang;
                data.date = new Date().getTime();
                me.loadLangLocal(data);
                localStorage.setItem('localLang', JSON.stringify(data));
            };
            this.loadLangLocal = function (data) {
                Ext.local = data;
                Ext.lang = function (langId) {
                    if (Ext.local[langId]) {
                        return Ext.local[langId];
                    }
    
                    delete window.localStorage.localLang;
                    localStorage.setItem('localLangBackup', true);
                    return langId;
                }
                Ext.application(me.ApplicationConf);
            };
    
            if (!local) {
                Ext.Ajax.request({
                    url: 'ajax/lang/webuser/init',
                    params: {
                        sid: sid,
                    },
                    success: function (data) {
                        debugger;
                        me.loadLangRemote(Ext.JSON.decode(data.responseText));
                    }
    
                })
            } else {
                local = JSON.parse(local);
                if (local.revisionNr == config.revisionNr && local.lang == config.lang) {
                    console.log('loading local lang variables');
                    if (local.date < new Date().getTime() - (24 * 60 * 60 * 1000) * 2) {//2 day caching time before retry
                        delete window.localStorage.localLangBackup;
                    }
                    debugger;
                    me.loadLangLocal(local);
                } else {
                    delete window.localStorage.localLang;
                    Ext.Ajax.request({
                        url: 'ajax/lang/webuser/init',
                        params: {
                            sid: sid,
                        },
                        success: function (data) {
                            me.loadLangRemote(Ext.JSON.decode(data.responseText));
                        }
                    })
                }
            }
    
        },
    })
    

    重要的是添加

      Ext.onReady(function () {
               Lang.Launch({
                    name: 'catalogAdministration',
                    appFold....
    

    在代码中调用 Launch 函数,因为它不会在运行时定义。我首先将文件添加到缩小文件中,然后调用 Lang.Launch 而不是 Ext.Application。

    希望有人使用我的解决方案 :)

    【讨论】:

      猜你喜欢
      • 2013-04-10
      • 1970-01-01
      • 1970-01-01
      • 2016-09-26
      • 2016-06-05
      • 2014-02-25
      • 2011-05-09
      • 2015-02-08
      • 2011-03-27
      相关资源
      最近更新 更多