2016-07-29 76 views
1

我正在处理ng网格上的批量操作。当选择所有行时,所选项目第一次是正确的,但在第一次批量操作之后,所选项目是空白的。通过下面的代码,它会发送一条通知:“必须至少选择一行才能移动。”如果您需要更多详细信息,请告诉我。提前致谢。角度ng-grid选择的项目在第一次迭代后为空

vm.init = function() { 
    vm.title = "Orphan Entries"; 
    selectReport("OrphanEntries"); 
}; 
/* initialization */ 
vm.init(); 

vm.gridOptionsReports = { 
      data: 'vm.data', 
      multiSelect: true, 
      enableColumnResize: true, 
      showFooter: true, 
      showSelectionCheckbox: true, 
      enableRowSelection: true, 
      selectWithCheckboxOnly: true, 
      selectedItems: [], 
      selectionCheckboxColumnWidth: 25, 
      enablePaging: true, 
      pagingOptions: $scope.pagingOptions 
     } 

$scope.applyBulkAction = function(){ 
    if(vm.selectedAction == 'notset'){ 
     Notification.error("You need to select a bulk action."); 
    }else{ 
     var rows = vm.gridOptionsReports.selectedItems; 
     if(rows.length < 1){ 
      Notification.error("Must select at least 1 row to move."); 
     }else{ 
      var toggleTo = 0; 
      if(vm.selectedAction == 'move'){ 
       toggleTo = 1; 
      } 
      var data = ""; 
      var first =true; 
      for(var i = 0; i< rows.length; i++){ 
       if(rows[i].selectedToBeMoved != toggleTo){ 
        if(first){ 
         data = '{"ID":"'+rows[i].iD+'"}'; 
         first = false; 
        }else{ 
         data = data + ',{"ID":"'+rows[i].iD+'"}' 
        } 
       } 
      } 
      if(data == ""){ 
       Notification.error("The rows that you have selected have already been flagged.") 
       }else{ 
        return ReportService.flagOrphansToBeMoved(data).then(flagOrphansToBeMovedComplete).catch(flagOrphansToBeMovedFailed); 

        function flagOrphansToBeMovedComplete(response) { 
         if(!response.data.error && response.data.status == 200){ 
          Notification.success('Bulk action was successful. All flagged rows will be moved during the next scan.'); 
          //vm.gridOptionsReports.selectedItems = []; 
          vm.init(); 
         }else{ 
          Notification.error('Error scheduling to move orphan.'); 
         } 
         return response; 
        } 

        function flagOrphansToBeMovedFailed(error) { 
         Notification.error('Error scheduling to move orphan.'); 
        } 
       } 
      } 
     } 
    } 

UI

enter image description here

UI代码:

<div class="row smallPaddingBot"> 
<div class="col-sm-2"> 
    <select ng-model="vm.selectedAction" class="form-control"> 
     <option value="notset">Bulk Actions</option> 
     <option value="move">Flag Selected To Be Moved</option> 
     <option value="dontMove">Flag Selected Not To Moved</option> 
    </select> 
</div> 
<div class="col-sm-1"> 
    <button type="button" class="btn btn-default" ng-click="applyBulkAction()">Apply</button> 
</div> 

+0

你介意张贴视图以及? –

+0

@LeonardoLana我刚添加它看起来像,当我逐步通过每个迭代。 –

回答

0

的问题是,我是重新创建NG-每次都会造成网格,所以我迷失了范围。解决方案是将gridOptionsReports.selectedItems设置为范围变量,然后引用该范围变量。

来源:

selectedItems: [], 

要:

selectedItems: vm.selectedRow, 

和:

var rows = vm.gridOptionsReports.selectedItems; 

要:

var rows = vm.selectedRows; 
相关问题