gpt4 book ai didi

angularjs - ui-grid 中 ng-grid 的 "beforeSelectionChange"相当于什么?

转载 作者:行者123 更新时间:2023-12-03 06:48:12 24 4
gpt4 key购买 nike

ng-grid中,我曾经通过以下方式使用beforeSelectionChange:

当用户选择一行时,将执行 ajax 调用。当 ajax 调用发生时,我设置了 $scope.doingAjaxCall = true,并为了防止用户更改选择,我在网格定义中添加了以下内容:

beforeSelectionChange: function () {
return !($scope.doingAjaxCall);
},

如果发生 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(网格、changedRows、事件)
  • decideRaiseSelectionEvent(网格、行、changedRows、事件)

但我不明白如何使用它们

重要说明:
我正在使用 multiSelect: false (即:只能选择一行)

最佳答案

这有点像黑客,但它会完成工作,直到您找到更好的解决方案。这是一个工作plunker .

我假设您使用 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);
});

然后,修改 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
' &nbsp; ' +
'</div>'
);

这样,调用实际点击逻辑之前就会评估$scope.clickConditions()。如果它是假的,则永远不会调用处理内部选择逻辑的selectButtonClick

$scope.clickConditions = function() {
// Check for any other conditions you need
return !$scope.doingAjaxCall;
};

正如我所提到的,这非常hacky!有更好的方法来覆盖模板(例如ui-grid/selectionRowHeaderButtons),覆盖模板时您必须 check the logic when updating ,您可能应该让用户知道在执行 AJAX 调用时在视觉上正在发生某些事情,等等。

更好的解决方案是 fork 存储库并添加您自己的 beforeSelectionChange 逻辑(可能从 here 开始)。但似乎您在其他地方没有得到太多帮助,所以希望这至少能让您开始!

关于angularjs - ui-grid 中 ng-grid 的 "beforeSelectionChange"相当于什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32101026/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com