2017-04-09 5 views
0

Ember.jsから構築されたWebサイトがあります。ユーザーは、URL http://..../view?showTitle=trueでページにアクセスできます。しかし、私は明示的にパラメータをshowTitle = trueに公開したくはありません(ユーザーはhttp://..../viewと表示されます)。このURLは自動的に生成され、リダイレクト先のURLとして機能します。だから、私は手動でページの負荷の前のどこかにそれを削除する必要があります。しかし、私はまだこのクエリパラメータのこの値がクエリデータに必要です。それを達成する方法はありますか(例は素晴らしいでしょう)?ルータをリフレッシュしないとどうなりますか?EmberのルータをリフレッシュせずにURLからクエリパラメータを削除する方法

答えて

1

実際には、あなたのシナリオの例は大きいだろう:)

ルートに移行しながら、データを格納するための他のいくつかの方法があります。例えば:transitionオブジェクトにパラメータを格納するか、サービスに値を格納する。リダイレクトルートを作成し、beforeModelフックを使用してクエリパラメータから値を取得し、実際のルートにリダイレクトします。

実施例は以下のとおりです。ところでember-twiddle-1

、あなたのルートでごqueryParamsを記述していない場合でも、あなたがtransition.queryParams経由でそれらにアクセスすることができます。これはちょっとハッキリしているようです。しかし、それは動作します:ember-twiddle-2(注:これは、同じルートでは動作しません。)

更新:あなたはコントローラパラメータを上書きすることができ

setupControllerフックで。したがって、あなたはURLからパラメータを削除することができます。 ember-twiddle-3

+0

ありがとうございます。 'this.transitionTo({queryParams:{showTitle:undefined}});'は同じモデルにトランジションするために働きます。トランジションコールを行わずに達成する方法はありますか? – Hengstar

+0

はい。 'setupController'フックをオーバーライドします。私はちょうど私の答えを更新し、第三のひねりを加えました。 – ykaragol

+0

ええ、これは素晴らしいです!それはうんざりでうまくいくようです。しかし、私はそれをローカルで実行すると、ページ内のリンクをクリックすると機能します。 * http:// localhost:4200/my-route?showTitle = false *を手動で開くと、リンクを更新してパラメータを削除しません。私の場合、このURLはバックエンドから構成されています。だから私たちはユーザーの入力としてそれを取ることができます。 – Hengstar

関連する問題