Сохранение измененных данных о нумерации таблиц - AngularJS - PullRequest
0 голосов
/ 17 ноября 2018

Требуется отправить изменения, внесенные в мою таблицу angularjs.Эта таблица заполняется асинхронно, поэтому разбиение на страницы является динамическим.

Всякий раз, когда я изменяю страницу ( например: страница 1 ) и перехожу на любую другую страницу (, например,: страница 2 ), данные, измененные на странице 1, сбрасываются при повторном доступе к.Измененные данные не сохраняются как таковые.

Поработав, чтобы увидеть, что может быть несколько способов избежать этого.

  1. Ограничение использования st-safe-src в таблицеопределение.(Но эта опция была возможна только при синхронной загрузке таблицы. Таблица не заполняется, если я удаляю безопасный источник)
  2. Используйте переменную для хранения / извлечения состояния элементов управления динамической формы, как в этом примере, который имелajax вызывал и заполнял все входные теги на основе проверок ajax, которые тоже не работали, так как значение по умолчанию моей опции выбора основано на вводе в БД.

Есть ли возможный способсделать это в angularjs?

Мой стол :

<table id="recordTable" st-table="display_record_returns"  st-safe-src="recordReturns" ng-show="recordReturns"
   class="table table-bordered table-striped shadow p-3 mb-5 bg-white rounded" ng-controller="BotRulesController">
   <thead class="thead-dark">
      <tr>
         <th style="white-space: nowrap">CASE NO</th>
         <th st-sort="code">MATCH CODE</th>
         <th st-sort="decision">RULE</th>
         <th st-sort="email">EMAIL</th>
      </tr>
   </thead>
   <tbody>
      <tr id="row.code" valign="middle" st-select-row="row"
         st-select-mode="multiple"
         ng-repeat="row in display_record_returns track by row.code"
         ng-attr-id="{{::row.code}}">
         <td>{{$index + 1}}</td>
         <td align="left" ng-bind="row.code"></td>
         <td>
            <select id="ruleChangeSelect_{{row.code}}" ng-change="ruleChanged(row.code, row.decision, selectionModel[row.code])" class="custom-select"
               style="margin-left: 0px"
               ng-model="selectionModel[row.code]"
               ng-options="choice.name for choice in possibleOptions track by choice.id">
               <option value="" hidden="hidden" readonly="" ng-hide="true"></option>
            </select>
         </td>
         <td ng-bind="row.email"></td>
      </tr>
   </tbody>
   <tfoot>
      <tr style="font-size:0.8rem !important;">
         <td colspan="22" class="text-center">
            <div st-pagination="" st-items-by-page="itemsByPage" st-displayed-pages="5"></div>
         </td>
      </tr>
   </tfoot>
</table>

Мой JS :

$scope.getRules = function () {

    $http({
        'url': '/getRules',
        'method': 'POST',
        'headers': {
            'Content-Type': 'application/json'
        }
    }).then(function (response) {
        $scope.recordReturns = response.data;
        $scope.ruleOptions = [{
            decision: "A"
        }, {
            decision: "B"
        }, {
            decision: "C"
        }];

        $scope.possibleOptions = getUniqueValues($scope.ruleOptions, 'decision')
            .map(function (id) {
                return {
                    id: id,
                    name: id
                }
            });

        $scope.selectionModel = {};

        angular.forEach($scope.recordReturns, function (input) {
            $scope.selectionModel[input.code] = $scope.possibleOptions.filter(function (opt) {
                return opt.id === input.decision;
            })[0];
        });

        function getUniqueValues(array, prop) {
            return [...new Set(array.map(item => item[prop]))];
        }

        $window.scrollTo(0, 0);
    })
};
...