2017-03-07 1 views
2

Ich habe diesen Code in einer App I inheritted:Ist es möglich, dass UI-Grid's AfterCellEdit künstlich ausgelöst wird?

onRegisterApi: function(gridApi) { 
    $scope.gridApi = gridApi; 
    $scope.gridApi.edit.on.afterCellEdit($scope, 
     function(rowEntity, colDef, newValue, oldValue) { 
    } 
} 

ich die gridOptions Objekt aktualisiert haben, die Bindungsdaten an den UI-Grid und so würde ich die afterCellEdit Rückruf wie für die Zelle zu feuern, die die aktualisierte rendert Daten.

Ist das möglich?

+0

Sie könnten die unbenannte Funktion durch eine benannte ersetzen und dann könnten Sie diese benannte Funktion aufrufen, um zu tun, was auch immer sie tut. – Feathercrown

+1

Hat meine Antwort unten geholfen? Kann ich sonst noch helfen? –

Antwort

1

In Antwort auf Ihre Frage, das ist, wie Sie UI-Grid afterCellEdit künstlich Feuer verursachen würde, wenn ANY Netzdaten außerhalb des Gitters ...

aktualisiert

var app = angular.module('app', ['ui.grid', 'ui.grid.edit', 'ui.grid.cellNav']); 
 
app.controller('MainCtrl', ['$scope', '$timeout', function($scope, $timeout) { 
 
    $scope.gridData = [{"FirstName": "Matt", "LastName": "W", "Job": "Stack Overflow User"}, 
 
        {"FirstName": "Tim", "LastName": "Harker", "Job": "Stack Overflow User"}]; 
 
    $scope.$watch('gridData', function(newValues, oldValues) { 
 
    for (var i = 0; i < newValues.length; i++) { 
 
     if (!angular.equals(newValues[i], oldValues[i])) { 
 
     for (var property in oldValues[i]) { 
 
      if (oldValues[i].hasOwnProperty(property)) { 
 
      if (oldValues[i][property] != newValues[i][property]) { 
 
       $scope.gridApi.edit.raise.afterCellEdit(newValues[i], null, newValues[i][property], $scope.gridOptions.data[i][property]); 
 
      } 
 
      } 
 
     } 
 
     } 
 
    } 
 
    $timeout(function() { 
 
     $scope.gridOptions.data = angular.copy($scope.gridData); 
 
    }); 
 
    }, true); 
 
    $scope.callbackData = {}; 
 
    $scope.gridOptions = { 
 
    enableCellEditOnFocus: true, 
 
    onRegisterApi: function(gridApi) { 
 
     $scope.gridApi = gridApi; 
 
     $scope.gridApi.edit.on.afterCellEdit($scope, 
 
     function(rowEntity, colDef, newValue, oldValue) { 
 
      $scope.callbackData.oldValue = oldValue; 
 
      $scope.callbackData.newValue = newValue; 
 
     }); 
 
    }, 
 
    columnDefs: [{name: 'FirstName'}, {name: 'LastName'}, {name: 'Job'}] 
 
    }; 
 
}]);
button { 
 
    margin-bottom: 10px; 
 
} 
 

 
div[ui-grid] { 
 
    height: 115px; 
 
    margin-bottom: 10px; 
 
}
<script src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.1/angular.min.js"></script> 
 
<script src="//cdnjs.cloudflare.com/ajax/libs/angular-ui-grid/4.0.2/ui-grid.min.js"></script> 
 
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/angular-ui-grid/4.0.2/ui-grid.min.css" /> 
 
<div ng-app="app" ng-controller="MainCtrl"> 
 
    <button ng-click="gridData[0].LastName='Williams'">Guess Last Name</button> 
 
    <div ui-grid="gridOptions" ui-grid-edit ui-grid-cellNav></div> 
 
    <div>{{callbackData}}</div> 
 
</div>

Let Ich weiß, wenn Sie weitere Fragen haben.

Verwandte Themen