Sie müssen die Subgrid-APIs registrieren. Jedes Gitter hat eine eigene API-Instanz, die Sie mit ihm kommunizieren:
rowScope.subGridOptions = {
appScopeProvider: $scope,
columnDefs: [
{field: 'amount'},
{field: 'packageAmount'},
{field: 'carrierAmount'}
],
data: rowScope.orderLines,
saveRow : $scope.saveRow,
onRegisterApi: function (gridApi) {
gridApi.rowEdit.on.saveRow($scope, $scope.saveRow)
}
}
dass in der Nähe ist, aber Sie injizieren unseren Steuerungsbereich in den subgrid Umfang mit appScopeProvider, denen Sie wirklich nicht tun müssen, . Stattdessen können wir saveRow generisch machen und es an das gewünschte gridApi binden. Das erste Argument von bind()
setzt this
für die Funktion. Wir werden nur das Rasterobjekt übergeben, aber wir werden es nicht brauchen. Das zweite bindende Argument ist das GridApi, das übergeben werden soll. Dann wissen wir in der saveRow-Definition, dass wir die richtige API als erstes Argument und dann die rowEntity als zweites Argument erhalten.
// Main grid:
$scope.gridOptions.onRegisterApi = function(gridApi) {
gridApi.rowEdit.on.saveRow($scope, saveRow.bind(gridApi.grid, gridApi));
};
// Subgrids:
onRegisterApi: function(gridApi) {
gridApi.rowEdit.on.saveRow($scope, saveRow.bind(gridApi.grid, gridApi));
}
// Altered saveRow:
function saveRow(gridApi, rowEntity) {
var promise = $q.defer();
gridApi.rowEdit.setSavePromise(rowEntity, promise.promise);
// fake a delay of 3 seconds whilst the save occurs, return error if gender is "male"
$interval(function() {
if (rowEntity.gender === 'male'){
promise.reject();
} else {
promise.resolve();
}
}, 3000, 1);
};
Da Sie wahrscheinlich eine andere Speicherfunktion für Teilnetze, die Hauptsache erinnern würden, ist das „saveRow“ Ereignis auf sich registrieren alle mit onRegisterApi
Hier ist ein Arbeits Plunker den Code oben zeigt, : http://plnkr.co/edit/52mp9C?p=preview