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