我正在使用 HTML/CSS/JS 和 WinJS 框架为 Windows 商店开发应用程序。
我的应用程序需要在启动时加载配置数据,如果在线则通过网络加载,如果不在线则在本地加载。
我的问题是,理想情况下,应用程序应该只显示带有进度控件的启动屏幕,直到数据加载完毕。但我不知道将我的加载代码放在哪里来实现这一点。
我可以做这样的事情:
(function () {
"use strict";
WinJS.Binding.optimizeBindingReferences = true;
var app = WinJS.Application;
var activation = Windows.ApplicationModel.Activation;
var nav = WinJS.Navigation;
function loadConfig() {
return WinJS.xhr({ url: myURL }).then(
function (xhr) {
// parse response stuff
},
function (xhr) {
// do error handling stuff
}
);
}
function initializeUI(args) {
// The generated code for setting up the navigation controller, but moved to a seperate function
args.setPromise(WinJS.UI.processAll().then(function () {
if (nav.location) {
nav.history.current.initialPlaceholder = true;
return nav.navigate(nav.location, nav.state);
} else {
return nav.navigate(Application.navigator.home);
}
}));
}
app.onactivated = function (args) {
if (args.detail.kind === activation.ActivationKind.launch) {
if (args.detail.previousExecutionState !== activation.ApplicationExecutionState.terminated) {
loadConfig().then(
function () {
initializeUI(args);
}
);
}
if (app.sessionState.history) {
nav.history = app.sessionState.history;
}
if ( config ) // check if configuration exists to prevent calling this twice
initializeUI(args)
}
};
app.start();
})();
但这会在加载数据之前显示我的“default.html”页面,所以我必须在“default.html”中使用我的启动图像并插入一个进度控件。
这感觉不是我的问题的正确解决方案?