さて、私はこのplunkrが私の状況をシミュレートしようとしています:
私には3つのタブがあり、ユーザーがテキストボックスに単語を入力し、ボタンをクリックすると、テキストボックスに入力された内容に従って角度サービスがDBから回答(結果)を返すという考えです(このプロセスをシミュレートしましたjson ファイルにデータを要求するため、何を入力しても重要ではなく、常にデータ全体が返されます)、別のビューにテーブルが入力されました。
私の目標は何ですか?さて、タブごとにすべてのビューをそのまま保持する必要があります。つまり、ユーザーがタブをクリックして (状態を変更して) 別のタブに戻ると、要求されたデータ (および検索ボックスに入力されたもの) がそこにある可能性があります。
編集:
私の定義を含む配列があります:
var parentStates = [
{state : 'tab1', url: '/tab1/', template: 'tab1.html', s: false, d: true},
{state : 'tab2', url: '/tab2/', template: 'tab2.html', s: false, d: true},
{state : 'tab3', url: '/tab3/', template: 'tab3.html', s: false, d: true},
{state : 'tab1.table', url: '', template: 'table.html', s: true, d: false},
{state : 'tab2.table', url: '', template: 'table.html', s: true, d: false},
{state : 'tab3.table', url: '', template: 'table.html', s: true, d: false}
];
そして、私は自分の状態を次のように動的に定義します。
parentStates.forEach(function(childName){
$stateProvider
.state("home." + childName.state, {
controller: "itemController", resolve: { $title: function() { return childName.state; } },
url: childName.url,
templateUrl: childName.template,
sticky: childName.s,
deepStateRedirect: childName.d
})
});
状態にのみ粘着性を適用しますhome.tab*.table
。これは機能しますが、期待どおりではありません。たとえば、検索ボックスに入力したものは、タブを変更すると消えます。3 つの配列 (後述) のコンテンツをタブごとに保持できるようにする必要があります。それは私の問題です。
私は3つの配列を持っています:
$scope.Model.items;
$scope.Model.filteredlist;
$scope.Model.expenses;
そして、配列のデータをクリアするために呼び出される関数を使用し$scope.clear_arrays
ます (でも$stateChangeSuccess
)。欲しいものを手に入れるのにこれでいいのかわかりません。
優れたangular-ui-router-extras(sticky states)
ライブラリを使用する必要があることはわかっていますが、私の場合にそれを適用する方法がわかりません。私は試してみました:
sticky: true,
deepStateRedirect: true,
しかし、動作しません。いくつかのアイデア、いくつかの助け?
編集:
ドキュメントが言うように、私はまさにこの部分が必要です:
... アプリケーション内のタブの状態は、他のタブのいずれかに切り替えたときに終了しません。ユーザーは、ワークフローを中断することなく、タブ間を行き来できる必要があります。