0

デモ: ttp://code.msdn.microsoft.com/windowsapps/Splash-screen-sample-89c1dc78/view/SourceCode

data-win-control="WinJS.UI.HtmlControl" を data-win-control="Application.PageControlNavigator" に変更するには?

4

1 に答える 1

0

したがって、これが少し遅れることはわかっていますが、同じ問題に直面したときにアプリで行ったことは次のとおりです。

最初に少し背景を説明します。

ナビゲーション テンプレートの動作は、default.html ページで PageControlNavigator コントロールが定義されていることに依存しています。

アプリが読み込まれ、スプラッシュ スクリーンが削除されると、コントロールは「ホーム」ページを定義するため、default.js ファイルの次のコードに従って、ホーム ページまたは最後の URL に移動します。

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);
    }
}));

Windows ストア アプリのコントラクトでは、アプリが 5 秒で読み込まれる (またはコンテンツが 5 秒で表示される) 必要があるため、スプラッシュ スクリーンは、すべてのデータを非同期で読み込むか、表示する前に読み込みを待機しているものをすべて読み込むまで待機しません。ホームページ、o スプラッシュ スクリーンを拡張して、アプリが必要なものすべてをロードする時間を与える必要があります。

だから、私がやった方法は、それが正しい方法かどうかはわかりませんが、私にとってはうまくいっています.スプラッシュ画面とホーム画面への移動。

function countDown() {
    if (Data.isReady > 0) {
        ExtendedSplash.remove();

        return nav.navigate("/pages/home/home.html");
    }
    else {
        setTimeout(countDown, 5000);
    }
}

そして、テンプレートからの約束で、私はそれを次のように変更しました:

// Use setPromise to indicate to the system that the splash screen must not be torn down
// until after processAll and navigate complete asynchronously.
args.setPromise(WinJS.UI.processAll().then(function () {
    if (nav.location) {
        nav.history.current.initialPlaceholder = true;
            return nav.navigate(nav.location, nav.state);
    }
}));

この方法では、アプリの読み込み時に移動する場所がなく、データが読み込まれると countDown 関数がホームページへのリダイレクトを担当します。

繰り返しますが、それが「正しい」解決策であるかどうかはわかりませんが、単一ページのナビゲーション コントロールを失うことはなく、すべてが魅力的に機能しています。

それが役に立てば幸い。

于 2013-01-14T21:04:38.810 に答える