2

angularアプリケーションで状態ナビゲーションにui-routerを使用していますが、シナリオの1つでは、別のタブで新しい状態に移動する必要があります。

私は次の状態を持っています

.state("code",
        {
            url: "/code",
            params: { offer : null },
            templateUrl: "app/components/coupons/views/code.html"
        })

offer in param はオブジェクトです。同じブラウザでこの状態に移動すると、正常に動作します。ただし、別のブラウザー オファーでこの状態に移動すると、null になります。

同じ質問が別のユーザーによってここに投稿されましたhttp://stackoverflow.hex1.ru/questions/33232761/ui-router-open-state-in-new-tab-with-target-blank-params-are-lostしかしここparam はプロパティであり、オブジェクトではありません。したがって、URLに追加できます。

ありがとう、サム

4

4 に答える 4

1

新しいタブを開くと、アプリの新しいインスタンスが新しいタブに作成されます。これは、JavaScript に基づいており、ページが新しいときはパラメーターを保持しないためです。したがって、nullこのページは他のページとは関係がないため、状態はパラメーターで読み込まれます。$window回避策として、新しいページにデータを添付して取得することをお勧めします。

于 2016-01-10T09:07:50.757 に答える
0

クリーンな方法は、新しいブラウザー タブを開かないことです。sina が言ったように、Angular アプリの新しいインスタンスが作成されます。つまり、サービスで保持される可能性のあるすべての状態が失われます。他の可能性は考えられません:

  1. 関連情報を URL に入れる
  2. $window で情報を共有できるとは思いませんが、localStorage を使用できます
  3. Cookie も有効なオプションです

Javascript: タブ間でデータを共有する

于 2016-01-10T09:57:59.623 に答える