Как сохранить данные в ng-grid?

Я видел сообщение "Как я могу обновить свой сервер с измененными данными из ng-grid?" но я думаю, что это неосуществимо для моей ситуации. У меня есть несколько NG-сетки (может быть более 15 внутри нескольких аккордеонов) в одном контроллере. Отслеживание всех этих отдельных ячеек отдельной нг-сетки не представляется разумным. Есть ли способ извлечь целые данные из одной нг-сетки, а не отслеживать отдельные ячейки?

1 ответ

Решение

Вы можете прослушать событие ngGridEventData, поэтому при изменении источника данных сетки это событие вызывается, сообщая, что данные были успешно изменены.

Пример:

HTML:

   <div ng-controller="MyCtrl">
      <button ng-click="addPerson1()">Add PersonA</button>
        <div class="gridStyle" ng-grid="gridOptionsA"></div>
          <button ng-click="addPerson2()">Add PersonB</button>
        <div class="gridStyle" ng-grid="gridOptionsB"></div>     
    </div>

ЯШ:

   app.controller('MyCtrl', function($scope) {
      $scope.gridOptionsList=[];
        $scope.myDataA = [
                 {name: "Moroni", age:29},
                         {name: "Tiancum", age: 35},
                             {name: "Jacob", age: 15},
                             {name: "Nephi", age: 75},
                             {name: "Enos", age: 7}
                             ];
            $scope.myDataB = [
                 {name:"Moroni",age:29},
                         {name:"Tiancum",age:35},
                             {name:"Jacob",age:15},
                             {name:"Nephi",age:75},
                             {name:"Enos",age:7}
                             ];

        $scope.gridOptionsA = { 
            data: 'myDataA'
            };

          $scope.gridOptionsB = { 
            data: 'myDataB'
            };

            $scope.gridOptionsList=[$scope.gridOptionsA,$scope.gridOptionsB];

            $scope.addPerson1=function(){
              $scope.myDataA.push({name: "Alex", age:30});

            }
             $scope.addPerson2=function(){
              $scope.myDataB.push({name: "Ben", age:40});
            }

        $scope.$on('ngGridEventData', function (event,gridId) {
          var filteredGrid=$scope.gridOptionsList.filter(function(grid){
            return grid.gridId==gridId;
          })
             $scope.filteredGrid=filteredGrid[0];
             //grid data
             $scope.filteredGridData=$scope.filteredGrid.ngGrid.data;
        });

Пример из жизни: http://plnkr.co/edit/aFZ6YJ0cqHdRZNdasfJ6?p=preview

Другие вопросы по тегам