Angular ui grid 数据更新后未删除每行的Angularjs ui网格事件

Angular ui grid 数据更新后未删除每行的Angularjs ui网格事件,angular-ui-grid,Angular Ui Grid,我有一个网格,每行包含一个编辑按钮。在第一次加载页面时,一切正常,但是如果我尝试添加新实体并重新填充网格,edit按钮将触发第一个已存在实体的edit事件 这是我的代码: var columnDefs = [ { name: '', field: 'id', cellTooltip: 'Edit', enableSorting: false, enableColumnMenu: false, en

我有一个网格,每行包含一个编辑按钮。在第一次加载页面时,一切正常,但是如果我尝试添加新实体并重新填充网格,edit按钮将触发第一个已存在实体的edit事件

这是我的代码:

    var columnDefs = [
      {
        name: '', field: 'id',
        cellTooltip: 'Edit',
        enableSorting: false,
        enableColumnMenu: false,
        enableCellEdit: false,
        maxWidth: 30,
        headerCellTemplate: '<div class="ui-grid-cell-contents ui-grid-icon"></div>',
        cellEditableCondition: false,
        cellTemplate: '<div class="ui-grid-cell-contents ui-grid-icon"><div title="Edit" class="ui-edit ui-grid-icon-pencil" ng-click="grid.appScope.editNews({{row.entity.id}})"></div></div>'
      },
      { name: 'shortDescription', field: 'shortDescription' }];

  $scope.gridOptions = {
    enableGridMenu: false,
    enableSorting: false,
    enableRowHashing: false,
    columnDefs: columnDefs,
    data: "data",
    onRegisterApi: function (gridApi) {
      $scope.gridApi = gridApi;
    }
  };

  var getData = function () {
    showLoading('.grid');

    newsRepository.resourceFunctions.query(displayOptions,
      function (data) {
        if (data.length == 0) {
          setEmptyGrid($scope, 'There are no news!');
          $scope.data = [{
            "message": 'There are no news!'
          }];
        }
        else {
          setGrid(data);
        }

        hideLoading('.grid');
      }, //success
      function (error) {
        $scope.gridApi.selection.clearSelectedRows();
        hideLoading("#view-container");
        toaster.pop('error', "Server error",
          "There was an error while processing your request. Please contact support.", 10000);
      }); //error
  };

  function setGrid(data) {
    $scope.gridOptions.columnDefs = columnDefs;
    $scope.data = data;
  }

编辑事件位于cellTemplate内:grid.appScope.editNews({{row.entity.id})。此外,网格数据更新后,将使用正确的实体id填充此模板,但将使用旧实体的id调用editNews。有什么办法可以解决这个问题吗?

我今天遇到了类似的问题,不过更多的问题是当添加新行或删除现有行时,
cellTemplate
按钮没有移动到正确的行

在您的特定情况下,只需删除调用editNews中的
{{
}
。例如,它应该是:


ng click=“grid.appScope.editNews(row.entity.id)”
。这对我来说效果很好。

我今天也遇到了类似的问题,不过更多的问题是当添加新行或删除现有行时,
cellTemplate
按钮没有移动到正确的行

在您的特定情况下,只需删除调用editNews中的
{{
}
。例如,它应该是:

ng click=“grid.appScope.editNews(row.entity.id)”
。这对我很有效

$scope.gridApi.selection.clearSelectedRows();
setGrid(data.items);