2016-03-22 23 views
1

Her satırda bir düzenleme düğmesi içeren bir ızgaram var. Her şey sayfa ilk kez yüklenirken beklendiği gibi çalışır, ancak yeni bir öğe eklemeye ve ızgarayı yeniden oluşturmaya çalışırsam, düzenleme düğmesi zaten var olan ilk varlığın düzenleme olayını tetikler.Angularjs ui-grid olayları veri güncellemesinden sonra satır başına kaldırılmıyor

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

düzenlemek olay içindedir:

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; 
    } 

Bu ızgara yeniden doldurulur nasıl (veri kaydetmek AJAX isteği geliyor ki):

Bu

benim kodudur cellTemplate: grid.appScope.editNews ({{row.entity.id}}). Ayrıca, grid verisi güncellendikten sonra, bu şablon doğru varlık kimliğiyle doldurulur, ancak editNews eski varlığın kimliğiyle çağrılır. Bunu nasıl düzeltebilirim?

cevap

0

Bugün için benzer bir sorunla karşılaştım, ancak cellTemplate düğmelerinin yeni bir satır eklendiğinde doğru satırına geçmemesi veya varolan bir satırın kaldırılmasıyla ilgili daha fazla şey yapmak.

Özel durumunuzda, düzenlemek istediğiniz numarayı düzenlemek için {{ ve }} öğelerini kaldırmanız yeterlidir. Örneğin. Olması gereken:

ng-click="grid.appScope.editNews(row.entity.id)". Bu benim için güzel çalıştı.

İlgili konular