Sencha touch 在Sencha Touch应用程序中加载依赖项之前,是否有方法调用函数
Sencha Touch应用程序需要:[]选项来指定我们需要加载的控制器、模型和存储等的列表,以使应用程序正常工作,但是否有办法在加载依赖项之前执行我们需要的内容。例如,我甚至在加载所有依赖项之前就需要浏览器语言。那么有可能吗 请记住:Sencha Touch只不过是JavaScript。 您可以在加载sencha microloader的脚本标记前面的index.html中添加一些脚本Sencha touch 在Sencha Touch应用程序中加载依赖项之前,是否有方法调用函数,sencha-touch,sencha-touch-2.3,Sencha Touch,Sencha Touch 2.3,Sencha Touch应用程序需要:[]选项来指定我们需要加载的控制器、模型和存储等的列表,以使应用程序正常工作,但是否有办法在加载依赖项之前执行我们需要的内容。例如,我甚至在加载所有依赖项之前就需要浏览器语言。那么有可能吗 请记住:Sencha Touch只不过是JavaScript。 您可以在加载sencha microloader的脚本标记前面的index.html中添加一些脚本 <!DOCTYPE HTML> <html manifest="" lang="en-US
<!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>
民族解放力量
我在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');
在ExtJS中,我通过首先加载一个依赖类来实现这一点
Ext.require([
'MyApp.Dependencies',
..
]);
因此Dependecies类在所有控制器之前加载,如下所示
Dependencies.js:
Ext.define('MyApp.Dependencies', {
singleton: true,
init: function() {
// load translation data
}
});
MyApp.Dependecies.init();
对于completion,我的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");
}
是的,但这是超出sencha界限的事情。需要在应用程序级别实现。无论如何,我认为这是一个简单的方法,可能会帮助其他读者。向上投票。嗯,很有趣。这看起来可能有用。让我查一查。谢谢,upvoted.upvoted,但是建议对微加载器进行更改吗?不,他们不建议这样做-他们建议使用语言字符串和大约千行
panel.setTitle()
,label.setText()
等,将字符串放入UI。我忘记了他们的第二个建议:我应该为每种语言编译一次项目,并在每个app.js文件中硬编码语言字符串。语言只是一个例子。在lib文件中进行更改会阻碍您升级到新版本。假设sencha更新了库,您进行了一次更新,库中的额外代码就要花很多钱了。每次升级时,您必须跟踪要复制粘贴的内容。他们的大多数建议可能并不适用于所有语言,但他们的建议绝对适用于他们的产品。我不认为三千行label.setText()
在任何语言中都有意义。sencha论坛上有一条很长的线索,关于如何需要更好的本地化支持。它从Ext2开始,但sencha没有提出任何建议。