AngularJS在按键上更改多行选择ng-grid属性
发布时间:2020-12-17 17:55:36 所属栏目:安全 来源:网络整理
导读:我的视图中定义了以下网格 div class="gridStyle hide" ng-grid="resultsOptions" id="resultsGrid"/div 并且我只想在按下ctrl键时允许multiSelect.所以我在Controller中将multiSelect属性定义为false. $scope.resultsOptions = { data: 'searchData',select
我的视图中定义了以下网格
<div class="gridStyle hide" ng-grid="resultsOptions" id="resultsGrid"></div> 并且我只想在按下ctrl键时允许multiSelect.所以我在Controller中将multiSelect属性定义为false. $scope.resultsOptions = { data: 'searchData',selectedItems: $scope.mySelections,multiSelect: false,enableHighlighting: true,enableRowSelection: true }; 在同一个控制器中,我有以下代码将multiSelect设置为true. $("#resultsGrid").keydown(function (e) { if (e.ctrlKey) { $scope.resultsOptions.multiSelect = true; $scope.$apply(); } }); 当我按下ctrl后启动应用程序multiSelect值更改.但我仍然无法做出多重选择. 我试图将变量用于multiSelect,但它不会改变一个东西. 以下示例也不会更改multiSelect属性.但它改变了网格标题. 有没有简单的解决方案?或者我的代码中有什么错过? 解决方法
批准的“hacky”答案对我们来说不够干净,所以我们依靠beforeSelectionChange上的event参数构建了一个稍微强大的版本,而不是做出讨厌的键绑定.
这也适用于您添加此事件回调的任何网格,因为它不需要引用任何特定的自定义CSS类或ID,而只需使用可靠的ng-grid类. beforeSelectionChange: function(rowItem,event){ if(!event.ctrlKey && !event.shiftKey && $scope.multiSelect && !$(event.srcElement).is(".ngSelectionCheckbox")) { angular.forEach($scope.myData,function(data,index){ $scope.gridOptions.selectRow(index,false); }); } return true; } 这样做只是检查我们是否正在进行多选操作(按住Ctrl键,Shift键或使用多选复选框),如果是,则进行多选.如果用户只是单击行中的任何其他位置,并且多重选择处于活动状态,则删除任何当前选择,以便之后只选择一个目标行. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |