11

ng-grid で以下を設定しました。

    var gridData = {};
    $scope.gridOptions = {
        data: 'gridData',
        enableCellEdit: true,
        multiSelect: false,
        columnDefs: [
            { field: 'testId', displayName: 'Test Id' },
            { field: 'name', displayName: 'Name', enableCellEdit: true, editableCellTemplate: cellEditableTemplate },
            { field: 'description', displayName: 'Description', enableCellEdit: true, editableCellTemplate: cellEditableTemplate },
            { field: '', cellTemplate: '<button ng-click="delete(row)">Delete</button>' }
        ]
    };

と:

   $scope.delete = function (row) {
      row.entity.$deleteData({ testId: row.entity.testId });
   }

これにより、行を削除するサーバーに HTTP メッセージが送信されます。ただし、行はまだグリッドに残ります。行の削除ボタンをクリックすると、gridData オブジェクトからも行が削除されるようにするにはどうすればよいですか?

4

2 に答える 2

6

Valentyn Shybanovがコメントで述べたように、サーバーがデータベース内のオブジェクトを正常に削除したかどうかを確認し、それを gridData 配列から削除する必要があります。

$scope.delete = function(row) {
    row.entity.$deleteData({testId:row.entity.testId})
        .then(function(response) {
            if (response.status === 'OK') {
                remove($scope.gridData, 'testId', row.entity.testId);
            }
        });
}

// parse the gridData array to find the object with testId
function remove(array, property, value) {
    $.each(array, function(index, result) {
        if (result[property] == value) {
            array.splice(index, 1);
        }
    });    
});

「削除機能」はhttps://stackoverflow.com/a/6310763/1036025から取得されました

于 2013-04-11T18:37:11.467 に答える