2016-11-30 16 views
0

私はAngularで作業するのが初めてで、router-uiパッケージに関するいくつかの助けが必要です。私の状態のいくつかの404で以前の状態パラメータを保持するにはどうすればよいですか?

はそうのような動的な値で構成されています:

.state('state-name', { 
    url: `${dynamicValue}/state-name`, 
    abstract: true, 
    template: '<ui-view/>', 
    data: { 
    layout: { 
     footer: false 
    } 
    }, 
    resolve: { 
    context: resolveContext 
    }, 
}); 

この値は、ユーザーがからオプションを選択したラジオボタンを経由して渡されます。これはうまくいきますが、私が抱えている問題は、ユーザーが値を選択した後に間違ったURLを入力すると、選択肢を維持するのではなく最初のラジオオプションにリダイレクトされるということです。これは、ユーザーがオプションを選択しなかった場合に設定した条件によるものです。

など。

利用可能なオプション:

1. 1234 
2. 5678 

は、私が選択した場合:

domain.com/5678/state-name/xyxyxyxyxxy 
:私は404をトリガした場合

domain.com/5678/state-name 

5678 

それはこのURLを生成し、

domain.com/1234/state-name 

むしろより:それはにリダイレクト

domain.com/5678/state-name/ 

私はotherwise()機能を変更しようとしましたが、多くの幸運を持っていません。以前に選択したオプションは、別のオプションを選択するまで永続的に維持するにはどうすればよいですか?コントローラ$onInit()の機能を変更する方が良いでしょうか?

答えて

0

この方法を試してください。

.state('parentState', { 
    url: `:id/state-name`, 
    abstract: true, 
    template: '<ui-view/>', 
    data: { 
    layout: { 
     footer: false 
    } 
    }, 
    resolve: { 
    context: resolveContext 
    }, 
}).state('childState', { 
    url: `:id/state-name/xyxyxy`, 
    abstract: true, 
    template: '<ui-view/>', 
    data: { 
    layout: { 
     footer: false 
    } 
    }, 
    resolve: { 
    context: resolveContext 
    }, 
}); 

したがって、最初のオプションは 'id'パラメータを動的に使用します。

idパラメータをui-srefの状態名に渡すことで呼び出すことができます。たとえば、

<a ui-sref="childState({'id':5678})"> 
    <input type="radio" value="5678" /> 
</a> 

他の人のために作成したり、ng-repeatを使用して同じように呼び出すことができます。

私はそれが役に立ちそうです。

+0

これは実際に値がどのようにキャプチャされるかには問題ありません。この領域は完全に機能し、過去の変化の仕方です。 – Robert

関連する問題