2

我得到一個新的下拉列單擊和正在使用enableCellEditOnFocus當我試圖打開下拉它不打開和備用下拉菜單正常工作。爲了避免混淆,我修改了代碼,並且顯示了一些代碼給我的錯誤,這裏是my plunker下拉開放問題裏面的網格

這是我的UI網格物體

$scope.gridOptions = { 
enableCellEditOnFocus: true 
}; 
    $scope.gridOptions.columnDefs = [ 
{ name: 'gender', displayName: 'Gender', editableCellTemplate: 'ui-grid/dropdownEditor', width: '20%', 
    editDropdownValueLabel: 'gender', editDropdownOptionsArray: [ 
    { id: 1, gender: 'male' }, 
    { id: 2, gender: 'female' } 
] } ]; 

我通過使用此代碼添加新行:

$scope.addNewRow = function() { 
    $scope.gridOptions.data.push({ 
    "gender": "male"}); 
}; 
//adding new row inside of uigrid 
$scope.newRow = function (row, columnIndex) { 
    tempIndexSave = ""; 
    tempIndexSave = _.indexOf($scope.gridOptions.data, row); 
    var length = $scope.gridOptions.data.length; 
    if (length - 1 == tempIndexSave) { 
     $scope.addNewRow(); 
    } 
}; 
+0

您試圖實現的功能不是直截了當的。你想在用戶開始編輯現有行時添加一個新行?如果是,那麼爲什麼你想要這個功能?爲什麼你不能將添加的新行部分與編輯分開?可能是你可以有一個按鈕來添加一個新的行... –

+0

@GaneshKumar實際,這是客戶的要求,他希望和低於該網格我有一個保存按鈕,保存網格的所有數據 –

+0

因此,每次用戶點擊下拉,你想添加一個新的行? –

回答

1

的問題是由於these lines在這裏你可以看到有屏幕閱讀器的黑客攻擊。

這個技巧可能會帶來類似的問題,以你的,因爲它取決於beginCellEditafterCellEdit事件被均勻地發射並具有固定的模式:

  • beginCellEdit
  • afterCellEdit
  • beginCellEdit
  • afterCellEdit
  • beginCellEdit

...

添加一個新行,同時已編輯的行打破了這種格局,因爲,爲新創建的行,你缺少一個beginCellEdit,所以preventMouseDown功能會一直火,防止用戶交互。

我提出了一種解決方法,但如果您想保持與屏幕閱讀器的兼容性(請參閱我鏈接到的文件中的行之前的註釋),我不建議您使用此方法,因爲解決方法可能會破壞破解。

解決方法包括在添加行時提升僞造的beginCellEdit,如您在this updated plunkr中所看到的。

... 
if (length - 1 == tempIndexSave) { 
    $scope.addNewRow(); 
    $scope.gridApi.edit.raise.beginCellEdit(); 
} 
... 
+0

謝謝隊友......這是我想要的笏:) –