spo*_*rts 8 angularjs ng-grid angular-ui-grid
在ng-grid
,我曾经以beforeSelectionChange
下列方式使用:
当用户选择行时,执行ajax调用.虽然我设置了ajax调用$scope.doingAjaxCall = true
,并且为了阻止用户更改选择,我在网格定义中有这个:
beforeSelectionChange: function () {
return !($scope.doingAjaxCall);
},
Run Code Online (Sandbox Code Playgroud)
如果ajax调用正在发生,它会锁定/冻结选择.
现在,在ui-grid
(又名ng-grid 3)中,我不知道相当于什么afterSelectionChange
.
在文档的这一部分:
http://ui-grid.info/docs/#/api/ui.grid.selection.api : PublicApi
我看到两个事件:
rowSelectionChanges
rowSelectionChangedBatch
.这些似乎相当于旧的 afterSelectionChange
在文档的这一部分:
http://ui-grid.info/docs/#/api/ui.grid.selection.service : uiGridSelectionService
我看到这两个似乎与需求相关的方法:
raiseSelectionEvent(grid, changedRows, event)
decideRaiseSelectionEvent(grid, row, changedRows, event)
但我不明白如何使用它们
重要提示:
我正在使用multiSelect: false
(即:只能选择一行)
这有点像黑客,但它会完成工作,直到您找到更好的解决方案。这是一个正在工作的笨蛋。
我假设您用于rowSelectionChanged
执行 AJAX 调用和切换doingAjaxCall
。
gridApi.selection.on.rowSelectionChanged($scope, function(row) {
$log.log('Row ' + row.entity.id + ' selected: ' + row.isSelected);
$log.log(' Simulating ajax call...');
$scope.doingAjaxCall = true;
$timeout(function() {
$log.log(' ...done with ajax call');
$scope.doingAjaxCall = false;
}, 2000);
});
Run Code Online (Sandbox Code Playgroud)
然后,修改 ui-grid 用于选择按钮的模板。
$templateCache.put('ui-grid/selectionRowHeaderButtons',
'<div ' +
' class="ui-grid-selection-row-header-buttons ui-grid-icon-ok" ' +
' ng-class="{\'ui-grid-row-selected\': row.isSelected}" ' +
' ng-click="grid.appScope.clickConditions() && selectButtonClick(row, $event)"> ' + // Modified template here
' ' +
'</div>'
);
Run Code Online (Sandbox Code Playgroud)
这样,在调用实际点击逻辑之前$scope.clickConditions()
进行评估。如果它是假的,则永远不会调用处理内部选择逻辑的 。selectButtonClick
$scope.clickConditions = function() {
// Check for any other conditions you need
return !$scope.doingAjaxCall;
};
Run Code Online (Sandbox Code Playgroud)
正如我提到的,这非常 hacky!有更好的方法来覆盖模板(例如ui-grid/selectionRowHeaderButtons
),当覆盖模板时,您必须在更新时检查逻辑,您应该让用户知道在执行 AJAX 调用时视觉上发生了一些事情,等等。
更好的解决方案是分叉存储库并添加您自己的beforeSelectionChange
逻辑(可能从这里开始)。但似乎您在其他地方没有得到太多帮助,所以希望这至少能让您开始!
归档时间: |
|
查看次数: |
1566 次 |
最近记录: |