Angular - назначить / сохранить выбранную опцию для переменной Scope для использования

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 а затем переходит на другую страницу и возвращается на страницу "Да/Нет", " No предварительно выбрано, потому что они выбрали его немного назад/он был сохранен. Мне не нужно держать выбор навсегда, только во время этой сессии. Думать, что это может иметь отношение к $ rootScope + ng-select.

  • 0
    Используйте поставщика (фабрика или сервис)
  • 0
    Итак, чтобы быть ясно, это не одностраничное приложение? Это приложение Angular с несколькими html-страницами?
Показать ещё 7 комментариев
Теги:
angular-ngmodel
angularjs-select

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>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню