有没有办法在Sencha Touch应用程序中加载依赖项之前调用函数

时间:2014-09-03 03:18:36

标签: sencha-touch sencha-touch-2.3

Sencha Touch应用程序需要:[]选项指定应用程序工作所需的加载控制器和模型及存储等列表,但有一种方法可以在加载之前执行我们需要的东西依赖关系。例如,例如我甚至在加载所有依赖项之前就需要浏览器语言。那有可能吗?

3 个答案:

答案 0 :(得分:1)

请记住:Sencha Touch只不过是JavaScript。 您可以在index.html中添加一些脚本,在加载sencha microloader的脚本标记前面。

<!DOCTYPE HTML>
<html manifest="" lang="en-US">
<head>
    <meta charset="UTF-8">
    <title>FNL</title>
    <style type="text/css">
        <!-- sencha stuff -->
    </style>

    <script id="myScript" type="text/javascript" src="myScript.js"></script>
    <!-- The line below must be kept intact for Sencha Command to build your application -->
    <script id="microloader" type="text/javascript" src=".sencha/app/microloader/development.js"></script>
</head>
<body>
    <div id="appLoadingIndicator">
        <div></div>
        <div></div>
        <div></div>
    </div>
</body>
</html>

答案 1 :(得分:1)

我在ST Microloader中添加了一些行:

    this.css = processAssets(manifest.css, 'css');

    // Load language strings
    var xhr = new XMLHttpRequest();
    xhr.open('GET', 'api/Settings', false);
    xhr.send(null);
    var settings = eval("(" + xhr.responseText + ")");
    Lang = settings.Translations[0];
    Options = settings.Options[0];
    // End Load Language Strings

    this.js = processAssets(manifest.js, 'js');

答案 2 :(得分:1)

在ExtJS中,我首先加载了一个Dependency类

Ext.require([
   'MyApp.Dependencies', 
    .. 
]);

所以Dependecies类在所有看起来像这个

的控制器之前加载

Dependencies.js:

Ext.define('MyApp.Dependencies', {  

    singleton: true,

    init: function() {
        // load translation data
    }

});

MyApp.Dependecies.init();

对于completition,我的init函数看起来像这样:

inti: function(){
    function loadScriptSync(url) {
        var xhrObj = new XMLHttpRequest();
        // open and send a synchronous request
        xhrObj.open('GET', url, false);
        xhrObj.send('');
        // add the returned content to a newly created script tag
        var se = document.createElement('script');
        se.type = "text/javascript";
        se.text = xhrObj.responseText;
        document.getElementsByTagName('head')[0].appendChild(se);
    }

    var language =  this.getLanguage();

    loadScriptSync("resources/locale/locale." + language + ".js");
}