2016-07-27 6 views
0

私のアプリケーションでは、URLにクエリ文字列(ユーザー型の検索文字列)を保存しています。 私はmodel={query: 'blabla'}を持っていて、$location.search(model)を使用してURLを私のパラメータで更新します。 私がリフレッシュしたり、別の状態に戻ったり戻ったりすると、$stateParams.queryを使用してクエリパラメータが取得され、それを検索ボックスモデルに割り当てます。

は、次のシナリオを検討してください。

ユーザ検索:aa/bb/login?f=Student%20Home11

URL:...?query=aa%2Fbb%2Flogin%3Ff%3DStudent%2520Home11

(スラッシュを%2Fにエンコードされていることに注意し、その20%は%2520に符号化されます%20はユーザーが入力した文字列であり、エンコードされたスペースではないため)。

問題:

、その後も(それらの状態の間で切り替えるときにURLに値を保つために)UI-ルータでその状態のparamsでqueryを持つ別の状態にナビゲートし、そして後にバックナビゲート:

%2520あたかも

$stateParams.query: AA%2Fbb%2Flogin%3FF%3DStudent%20Home11`

%20に復号されたが、他のすべてのエンコーディング(%2F)が符号化されたにとどまりました。 それをデコードすると、検索ボックスに(%20の代わりに)スペースが入ります。すべてのスラッシュがデコードされ、また、「%」記号 - しなければならないようaa/bb/login?f=Student%20Home11$stateParams

リフレッシュを(URLは明らかに同じまま)打った後、2番目のシナリオで

、 '%20'は文字通り%20のままです。

この奇妙な動作を引き起こす状態遷移には何が起こったでしょうか?

答えて

0

まあ、問題が見つかりました。 をステート間で移動するのにステート間で$ stateParamsを送信しなかったので、ステートを戻すときには、ステートからパラメータを取得するのではなく、おそらくURLのパラメータを解析しました。 現在作業中です。