AngularJS 按下按键时更改多行选择 ng-grid 属性

2023-12-31

我在视图中定义了以下网格

<div class="gridStyle hide" ng-grid="resultsOptions" id="resultsGrid"></div>

我想仅在按下 ctrl 键时才允许多重选择。所以我在控制器中将 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 属性。但它改变了网格标题。http://plnkr.co/edit/RwYSG4?p=preview http://plnkr.co/edit/RwYSG4?p=preview

有什么简单的解决办法吗?或者我的代码中遗漏了什么?


批准的“hacky”答案对我们来说不够干净,因此我们根据事件参数构建了一个稍微更健壮的版本beforeSelectionChange而不是进行令人讨厌的按键绑定。 这也适用于您添加此事件回调的任何网格,因为它不需要引用任何特定的自定义 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 键或使用多选复选框),如果是,则让多选发生。 如果用户只是单击一行上的任何其他位置,并且多选处于活动状态,我们将删除所有当前选择,以便随后仅选择一个目标行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AngularJS 按下按键时更改多行选择 ng-grid 属性 的相关文章

随机推荐

  • 具有初始容量的 Powershell 哈希表

    我想知道你如何在 powershell 中声明具有初始容量的哈希表 我知道我想要它有多大 但我必须在循环中为其分配值 所以像这样 hashtable 100 杰伦 莫斯特 https stackoverflow com users 4137
  • Win32 与 .Net [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 NET 比 Win32 更好还是相反 两者的优缺点是什么 在什么情况下一个会比另一个更好 Microsoft 是否已发布 Net 作为 Win3
  • 离开同步块时自动notify()/notifyAll() [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Microsoft Visual Studio“安装程序被阻止”

    当我尝试安装 Microsoft Visual Studio 2015 时 出现错误 安装程序被阻止 告诉我 需要重新启动计算机才能继续安装 请重新启动计算机并再次运行安装程序 这样做了之后还是不行 我使用的是 Windows 10 Bui
  • 方法参数的编译时验证

    我在这里发现了一些类似的问题 但不完整的答案没有帮助 而且比澄清任何事情都产生了更多的混乱 所以我尝试给出一个更结构化的问题 并希望得到能够帮助更多用户的答案 我的简化示例 我有一个带有两个不同构造函数的 Java 类 public cla
  • 从目录中读取所有文本文件

    我是 python 新手 我使用以下代码来提取输出作为情感分析 import json from watson developer cloud import ToneAnalyzerV3Beta import urllib request
  • Android Studio - 错误:程序类型已存在

    当我尝试编译代码时 Android Studio 3 0 1 上出现以下错误 Error Program type already present com squareup picasso Action RequestWeakReferen
  • BasicDatasource 和 PoolingDatasource 之间的区别

    org apache commons dbcp BasicDatasource 和 PoolingDataSoure 之间有什么区别 两者都支持连接池吗 何时使用它们中的每一个 基本数据源是 作为javadoc http commons a
  • Mustache 在服务器 (rails) 和客户端 (javascript) 上渲染

    是否有关于在服务器 使用 Rails 和客户端 使用 javascript 上使用 Mustache 最佳实践的文档 hello world mustache Hello planet some other file
  • C# - 按块上传文件 - 最后一个块大小错误

    我正在尝试将大文件分块上传到第三部分服务 但我对最后一块有问题 最后一个块总是小于 5mb 但所有块都包括 最后一个大小相同 5mb 我的代码 int chunkSize 1024 1024 5 using Stream streamx n
  • PowerShell:如何获得正确的 if else 构造?

    我正在尝试学习 powershell 并尝试构建一个 if else 语句 if Get Process Select Object name eq svchost Write Host seen else Write Host not s
  • Facebook 机器人分析事件记录

    我目前正在开发一个消息机器人 并尝试使用 Facebook 的应用程序分析平台记录其他事件 相关文件 消息机器人的事件 https developers facebook com docs app events bots for messe
  • 如何使用 PHPUnit 测试远程 Postgres 服务器上的数据库交互?

    我正在尝试对我创建的类进行单元测试 但大多数类都处理数据库 我已经在本地测试了非数据库相关的类 但当涉及到使用数据库时 尤其是远程数据库 我感到很困惑 该指南显示使用 PDO 访问本地数据库 该数据库似乎转储到 XML 文件 因此它对我来说
  • 找到颜色范围内最接近的颜色匹配[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有十个十六进制 RGB 颜色值 它们是肤色 我希望能够找到与特定十六进制 RGB 值最接近的匹配 我会以某种方式从起始颜色迭代直到落
  • android Recyclerview Layoutmanager的onLayoutChildren在item内容更改时调用

    我有一个带有自定义布局管理器的回收器视图 它是一个twowayview staggeredgridview布局管理器https github com lucasr twoway view blob master layouts src ma
  • 禁止 XmlSerializer 发出空值类型

    请考虑以下 Amount 值类型属性 该属性被标记为可为 null 的 XmlElement XmlElement IsNullable true public double Amount get set 当可为 null 的值类型设置为
  • 实例变量定义和实例块

    我有以下代码 s Hello String s 这编译得很好 这意味着变量定义在实例块之前执行 但是 如果我使用以下代码 它不会编译 错误 非法前向引用 s Hello String ss s String s 因此 不可能在变量之前的实例
  • setwd() 在当前工作目录中

    我有一个文件夹列表 每个文件夹中都有一个与 R 相同的脚本 必须在文件夹中的文件上运行 我编写了一次脚本并将脚本复制到每个文件夹中 问题是我有大约 100 个文件夹的列表 因此我不可能手动在当前工作目录中 setwd 我想知道是否可以设置当
  • Arm GCC 链接器:如何将数据放在 (rw) 非易失性存储器中的绝对地址处

    我面临以下问题 我正在对 ARM cortex M4 微控制器进行编程 我希望它具有 IP 地址 网络掩码 网关等的默认值 该默认值应该可以通过串行通信进行更改 并且更改应该是持久的 例如 IP 地址和网络掩码的默认值为 192 168 1
  • AngularJS 按下按键时更改多行选择 ng-grid 属性

    我在视图中定义了以下网格 div class gridStyle hide div 我想仅在按下 ctrl 键时才允许多重选择 所以我在控制器中将 multiSelect 属性定义为 false scope resultsOptions d