2017-05-16 7 views
0

私は現在$ stateParamsで新しい状態にIDを渡しています。うまく動作しますが、ユーザーがページをリロードするとどうなりますか?明らかに、$ stateParamsには値はありません。この問題を回避するには、初期ページの読み込み時に$ stateParam idをlocalStorageにロードする必要がありました。再ロード時に、$ stateParamsのidが存在しない場合は、手動で割り当てます。例:

// Ensure params are set when page is reloaded 
if (!$stateParams.id) { 
    $stateParams.id = localStorageService.get('campaignId'); 
    $state.go($state.current, $stateParams); 
} 

私のローカルマシンではこれが動作します。しかし私の開発サーバーでは、このエラーが発生しています:

Cannot assign to read only property 'id' of object '#<Object>'

$ stateParamsを書き込み可能にする方法はありますか?

これは意味があると思いますが、事前に感謝します。

+0

https://plnkr.coまたはhttps://jsfiddle.netを作成できますか。 – couzzi

+0

これを行うにはいくつかのハックがありますが、ほとんどの場合、このアプローチは何らかの悪い設計決定の兆候です。通常は、URLにリロードした後に必要な状態をルートパラメータとして保持し、state.go()を使用してstateParamsを設定します – ChrisY

答えて

0

$ stateParamsに実際に書き込む解決策を見つけることができなかったので、私はこの状況のた​​めに新しいオブジェクトを作成しました。

var stateParamsClone = {}; 
// Ensure params are set when page is reloaded 
if (!$stateParams.id) { 
    stateParamsClone.id = localStorageService.get('campaignId'); 
    $state.go($state.current, stateParamsClone); 
} 
関連する問題