2

Ember を使用して作成された ftp ブラウザ アプリケーションを考えてみましょう。おそらく、階層のツリー ビューと、現在選択されているファイルのリスト ビューを持つ可能性があります。そして、現在の選択を URL に次のように保存します。

baseUrl/#パス

例えば

www.emberftp.com/#stuff/docs/programming

それほど難しくありません。

でも!次に、このアプリケーションを Windows Commander のような 2 つのブラウザー ビューに拡張することを検討してください。そして、その 1 つのビューは現在 /stuff/docs/programming を閲覧し、他の /backup/images を閲覧しています。

明らかに、これにはあるレベルで複数のアウトレットが必要ですが、URL はどうなりますか?

まず第一に、これはまったくサポートされていますか? もしそうなら、ルートとシリアライゼーション/デシリアライズでこれをどのように設定する必要がありますか? そして、URL は実際にはどのように見えるでしょうか?

baseUrl/#?browser1=/stuff/docs/programming&browser2=/backup/images

多分?

4

1 に答える 1

0

Ember ルーターは、現在のアプリケーションの状態を反映するようにブラウザーの URL を更新します。これは、ユーザーが URL で現在の状態に戻ったり共有したりできるようにするためです。ルーターは一度に 1 つの状態にしかなれないことに注意することが重要です。

ルーターは、シリアライゼーションとデシリアライゼーションを使用してその状態を再作成することがすべてです。これは基本的に、現在のアプリケーションの状態を共有可能な URL に変換したり、その逆を行ったりするという考え方です。あなたが投稿した質問を解決するには、おそらくモデルが必要です。それwindowを と呼びましょうbrowsers。次に、URL を介してウィンドウをロードしているときに、すべての ftp ブラウザーを簡単に再構築できます。1 つのモデルを扱うと、シリアライゼーション/デシリアライゼーションのプロセスを概念化するのがずっと簡単になると思います。

とにかく、これがあなたのモデルがどのように見えるかです。

App.Window.create({
  id: 1,
  browsers: [1, 2]
});

App.Browser.create({
  id: 1,
  path: "/stuff/docs/programming"
});

App.Browser.create({
  id: 2,
  path: "/backup/images"
})

また、ルーターは「/windows/:window_id」を逆シリアル化する方法を知っているだけで済みます。

于 2012-10-09T22:03:55.800 に答える