7

パーマリンクをどのようにサポートしているかよくわかりません。これはおそらく、emberjs がパーマリンクをサポートしていないためです。

ユーザーが特定のレポートを選択できるようにする UI を構築しているので、ember では、ID を受け取るルート「レポート」を追加するだけで、URL は次のようになります。

#/reports/10/

私が持っている必要があるのは、そのURLにも存在するいくつかの追加パラメーターです。たとえば、開始日と終了日、メトリックタイプなどです。

#/reports/10/metric/impressions/start/10-08-2013/end/11-08-2013

したがって、これらのパラメーターをブラウザーに貼り付ける場合は、これらのパラメーターを取得する必要があります。また、ユーザーが日付ピッカーなどを使用してこれらの設定を変更すると、新しいパラメーターを反映するように URL を更新する必要があります。

編集:

これは、以下の回答に基づく解決策を含む jsbin へのリンクです。http://jsbin.com/ucanam/703

4

3 に答える 3

1

私もこれをどうするか考えました。リンクを共有したいので、データは URI に入れる必要がありますが、アプリケーションの場所とアプリケーションの状態を混同したくないでしょう。

hash:#/reports/10は、アプリケーションに移動先を伝えるために必要な最小限の情報です。場所に依存しない他のすべてのデータは、おそらく URI の検索部分に入れる必要があります。私は次のようなことを提案します:

#/reports?metrics=impressions&start=10-08-2013&end=11-08-2013

理論的には、ルートを入力するときにクエリ文字列を解析し、それに応じてモデルを更新できます。私の理解では、ルートの model() 関数は、URL を直接変更するかリンクをクリックしてルートに移動するときに呼び出されるため、その場所になります。

残念ながら、実際には、これは期待どおりに機能しませんでした。JSBinだけかどうかはわかりませんが、追加のアプリケーションデータとのリンクが実際にはナビゲートしないという奇妙な動作があり、これがパーマリンクの要点です. JSBin の指示に従うと、開始日と終了日がデフォルト値ではなく URL から取得されることに注意してください。この概念は、findQuery などを使用してさまざまなモデル データの追加のリクエストを送信するように拡張できるため、ほぼすべてのことが可能です。

http://jsbin.com/abadet/7

とにかく、それはあなたにいくつかのアイデアを与えるかもしれません。

于 2013-08-10T20:46:00.303 に答える
1

これを ember で実行するには、いくつかの方法があります。レポートに渡される可能性のあるその他のパラメーターに多くの柔軟性が必要な場合は、ember アプリケーションにクエリ文字列のサポートを追加するember-queryを確認してください。

もう 1 つのオプションは、ネストされたリソースを使用することです。たとえば、次のようになります。

App = Ember.Application.create({});

App.Router.map(function() {
  this.resource('report', {path: '/reports/:report'}, function() {
    this.resource('metric', {path: '/:metric'}, function() {
      this.resource('start', {path: '/:start'}, function() {
        this.route('end', {path: '/:end'});
      });
    });

  });
});

App.StartEndRoute = Ember.Route.extend({
  model: function(params, transition){
    return transition.params
  }
});

<script type="text/x-handlebars" data-template-name="start/end">
<pre>
Report ID: {{report}}
metric: {{metric}}
start: {{start}}
end: {{end}}
{{log this}}
</pre>
</script>

実際の例については、このjsbinを参照してください

于 2013-08-13T22:23:25.793 に答える