Как сохранить данные в 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