1. ホーム
  2. scope

[解決済み] Angularjs、ルート間のスコープの受け渡し

2023-05-23 13:06:39

質問

数ページにわたるフォームがある状況です (理想的ではないかもしれませんが、そういうものです)。私は、ユーザーがステップ間を行ったり来たりする場合、状態を簡単に記憶できるように、進むにつれて入力されるフォーム全体に対して 1 つのスコープを持ちたいと考えています。

だから私は、非常に擬似的なコードで、行う必要があります。

  1. 設定 $scope.val = <Some dynamic data>
  2. リンクをクリックすると、新しいテンプレート (おそらく同じコントローラ) にルーティングされます。
  3. $scope.val はまだ最後のページと同じ値であるべきです。

何らかの方法でスコープのデータを永続化するのが正しい方法なのでしょうか、それとも何か他の方法があるのでしょうか。もちろんデータベースに保存することを除いて、ルート間でスコープを永続化したコントローラーを作成することもできます。

どのように解決するのですか?

サービスは、アプリのライフサイクルを通じて持続するため、サービスを使用する必要があります。

例えば、あるユーザーに関するデータを保存したいとします。

このように、サービスを定義します。

app.factory("user",function(){
        return {};
});

最初のコントローラで

app.controller( "RegistrationPage1Controller",function($scope,user){
    $scope.user = user;
    // and then set values on the object
    $scope.user.firstname = "John";
    $scope.user.secondname = "Smith";
});

app.controller( "RegistrationSecondPageController",function($scope,user){
        $scope.user = user;
        // and then set values on the object
        $scope.user.address = "1, Mars";

    });