2

結果のリストを表示するアプリケーションを実装し、ユーザーが行を選択して比較し、それらに関する追加データを表示できるようにしました。

私が使用angular ui routeしていて、2 つのビューとそれぞれに 2 つのコントローラーがあるため、最初のビュー (比較ビューに移動する前にすべての結果がある場所) に情報を保持するための最良の方法を探しています。ユーザーが最初のビューに戻ったとき。

これまでのところ、私が試したのは使用です$localstorageが、最初のビューには、ユーザーが検索条件をフィルタリングできるフォームがあり、呼び出し<select></select>によって読み込まれるフォームもあります。 ajax呼び出しが実行されていないため、フォームの詳細を設定します。ユーザーがプレビューに戻った場合にのみ、ローカルストレージを常に保持したくありません。ajax$localstorageselect input

以下に、 の設定を示しますangular route ui

  .state('deposit', {
    url: '/deposit',
    templateUrl: './app/components/deposit/index.html',
    views: { "" : { templateUrl: './app/components/deposit/index.html' },
      "search@deposit": { templateUrl: "./app/components/deposit/search.html",
                            controller: "DepositSearchController"}
    }
  })
  .state('depositcomparison', {
    url: "/deposit/comparison",
    params: {
      ids: null,
      depositSearchData: null
    },
    templateUrl: './app/components/depositComparison/depositComparisonView.html',
    controller: 'DepositComparisonController'
  })

比較ビューから結果ビューに戻るときにのみデータを保持する適切な方法は何ですか?

よりも良い方法はありlocalstorageますか?

ありがとう。

/************更新************/ /************ ajaxの問題************ **/

選択のデータを取得します。

//...
$http.get(window.serviceUrl + '/api/institute').
  success(function(data){
    $scope.institutes = data.content;
    $scope.institutes.push({id: '0', name: 'All'});
    $localstorage.setObject('instituteData', $scope.institutes);
  }).
  error(function(data){
    console.log('Error');
  });
 //..

チェックlocalstorage:

//..
angular.element(document).ready(function () {
    if ($localstorage.getObject('instituteData').length !== 0) {
         $scope.institutes = $localstorage.getObject('instituteData');
      }
    //else call the ajax
//..
});

HTML:

<label for="forinstitute">Account Type</label>
<select id="instituteValue" class="form-control" ng-model="institute.id">
<option value=""> Select account</option>
<option ng-repeat="institute in institutes | orderBy:'name'" value="{{institute .id}}">{{institute .name}}</option>
</select>

/**************************************************** ********/

解決策になる可能性があります$watch??

4

2 に答える 2

1

ビューに表示するデータは、Angular サービスに保存します。次に、そのサービスをコントローラーに注入します。Angular のサービスはsingletonであるため、データはサービスに保持されます。

于 2015-05-21T17:20:55.790 に答える