Dartの標準ライブラリの状態と戻るボタンの処理を支援する機能はありますか?または、Webアプリケーションの状態を介したナビゲーションを実装するためにJavascriptソリューションをエミュレートする必要がありますか?
これを個人的なプロジェクトに適用して、ブラウザーの互換性が問題にならないようにするつもりです(つまり、HTML5のみのソリューションで十分です)。
どうもありがとう。
Dartの標準ライブラリの状態と戻るボタンの処理を支援する機能はありますか?または、Webアプリケーションの状態を介したナビゲーションを実装するためにJavascriptソリューションをエミュレートする必要がありますか?
これを個人的なプロジェクトに適用して、ブラウザーの互換性が問題にならないようにするつもりです(つまり、HTML5のみのソリューションで十分です)。
どうもありがとう。
HTML5は、履歴を操作するための新しいAPIを定義し、ウィンドウをリロードせずに場所を変更できるようにします。Dive Into HTML5に関するすばらしい記事があり、履歴APIを使用して単一ページのアプリで複数ページのナビゲーションをエミュレートする方法を示しています。ダートに簡単に翻訳できます。
記事は次のとおりです:http: //diveintohtml5.info/history.html
そして、これがHistoryのDartドキュメントです:http: //api.dartlang.org/docs/continuous/dart_html/History.html
ナビゲーション付きのシングルページアプリでは、クライアント側のコードを一般的に設定する方法は、RoRまたはDjangoアプリ、さらに言えばDarthttpサーバーをサーバーに設定する方法と似ています。
次に、それをシームレスなエクスペリエンスにするために:
サンプル:
main() {
// handle the back button
window.on.popState.add((_) => showPage());
}
showPage() {
String path = window.location.pathname;
if (path == '/') {
showFrontPage();
} else if (DETAIL_PAGE_URL.hasMatch(path)) {
String id = DETAIL_PAGE_URL.firstMatch(path).group(1);
showDetailPage(i);
}
}
showFrontPage() {
//... code to build a link to a detail page
detailAnchor.on.click.add((MouseEvent e) {
window.history.pushState(null, detail.title, detail.url);
e.preventDefault();
showDetailPage(detail);
}, false);
}
javascriptのように、URLでハッシュアンカーを簡単に取得できます。
var hash = window.location.hash;
ハッシュとあなた次第のアクションの間の関連付け。