0

はいまたはいいえのオプションを含む選択オプションがあります。

<select ng-model="selectedAnsw" ng-options="answ.text for answ in answs"></select>

$scope.answs = [
            {
                text: "Yes",
                value: Yes
            },
            {
                text: "No",
                value: no
            } ];

ユーザーが選択したものを$scope.selectedAnsw保存し、保存して選択内容を入力したいと考えています。したがって、ユーザーが選択Noしてから別のページに移動し、yes/no に戻ったNo場合、少し前に選択した/保存されているため、ページが事前に選択されています。このセッションの間だけ、選択を永久に保持する必要はありません。これは $rootScope + ng-select と関係があるかもしれないと考えています。

4

1 に答える 1

0

サービスを使用してこれを実現できます。setter メソッドと getter メソッドを使用してサービスを作成します。コントローラーにサービスを挿入します。

ユーザーがオプションを選択するたびに、setter を使用してサービスに設定し、ユーザーが同じページに戻ったときに、getter メソッドを使用してユーザーの選択を取得します。

選択ボックスに戻すには、サービスからオブジェクトを取得して、直接ng-model.

例えば

$scope.selectedAnsw = yourServiceValue

以下は、サービスの使用を説明する簡単なスニペットです。

var app = angular.module("myapp", []);

app.controller("testCntrl", function($scope, storeData) {
  $scope.selectedAnsw = {};

$scope.answs = [
            {
                text: "Yes",
                value: "Yes"
            },
            {
                text: "No",
                value: "no"
            } ];
  
  $scope.getAns = function() {
    $scope.userAns =  storeData.getUserAns();
  }
  
  $scope.setAns = function(ans) {
    storeData.setUserAns(ans);
  }
})
.service("storeData", function(){
  this.setUserAns = function(ans) {
    this.ans = ans;
  }
  
  this.getUserAns = function() {
    return this.ans;
  }
})
;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myapp">
  <div ng-controller="testCntrl">
<select ng-model="selectedAnsw" ng-options="answ.text for answ in answs" ng-change="setAns(selectedAnsw)">
     <option value="" disabled>Select An Answer</option></select>
</select>
  <div>User Selected : {{selectedAnsw}}</div>
  
  <button ng-click="getAns()">Show user selection</button>
  <div>User had Selected : {{userAns}}</div>
    </div>
  </div>

于 2015-10-30T20:42:35.510 に答える