2015-05-29 49 views
1

結帳我plunker:linkNG電網擋位選擇錯誤選擇其他行

var app = angular.module('app', []); 
// some stupid error won't let me paste the whole code, please check plunker 

重現:

  1. 選擇通過鼠標左鍵的第一行單擊
  2. 使用CTRL + 結束滾動到底部行
  3. 選擇說'Se LECT我...」使用轉變 + 點擊
  4. 預期:行,直到 '選擇我...' 選擇得到
  5. 觀察:附加行獲取所選

注意:滾動附加行再次被取消選擇。

+0

UI電網工程有兩個指標:一是爲真正的列表,一個用於視覺accessibles行。看起來像一個奇怪的行爲,滾動檢查太多的行視覺和真正的列表中的權利行。 Avec一些滾動它更新視覺檢查。如果問題報告了,您是否嘗試檢查ui-grid github? – Okazari

+0

無法在ui-grid – Jack

+0

上重現它哦,對不起,我誤以爲你在使用ui-grid ......但是你可以嘗試使用ui-grid嗎? ng-grid的github是否說過這個問題? – Okazari

回答

0

我說這樣的事情,和它的工作:

beforeSelectionChange: function() { 
    var grid = angular.element('.ngGrid'); 
    grid.data('alreadySelectedItems', grid.scope().selectedItems); 
    return true; 
}, 
afterSelectionChange: function (rowItem) { 
    if (rowItem.selected === true) { 
    } else if (rowItem.selected === false) { 
    } else if (rowItem.length > 0) { 
     var selectedIds = [], 
      grid = angular.element('.ngGrid'), 
      renderedRows = grid.scope().renderedRows, 
      alreadySelectedItems = grid.data('alreadySelectedItems') || []; 
     angular.forEach(rowItem, function (row) { 
      if (row.selected === true) { 
       selectedIds.push(row.entity.Id); 
      } 
     }); 
     angular.forEach(renderedRows, function (row) { 
      if (selectedIds.indexOf(row.entity.Id) === -1 && alreadySelectedItems.indexOf(row.entity) === -1) { 
       row.selected = false; 
      } 
     }); 
     grid.removeData('alreadySelectedItems'); 
    } 
}